代码之家  ›  专栏  ›  技术社区  ›  TonE

在Asp.net mvc中通过Uri访问资源

  •  0
  • TonE  · 技术社区  · 16 年前

    我正在开发一个ASP.NET MVC web应用程序,其中有一个具有Uri属性的对象。Uri包含以下形式的资源的restful链接:

    /Repository/Dataset/5
    

    存储库控制器的Dataset操作将Dataset 5的内容作为Json返回。

    非常感谢。

    3 回复  |  直到 16 年前
        1
  •  0
  •   takepara    16 年前

    在服务器端操作中,返回JsonResult。

    public ActionResult Dataset(int id)
    {
      // reository code
      return Json(model);
    }
    

    客户端呼叫 $.getJSON .

        2
  •  0
  •   Misha N.    16 年前

    我的意见是,您不应该在代码中的任何地方调用控制器。在ASP.NET中,MVC控制器是用来接受请求、获取数据并选择适当的视图返回的。

    也许您应该在存储库中添加返回已经JSONized数据的方法,或者引入可以序列化从存储库返回的数据的“中间人”,以便控制器可以调用中间人来完成这项工作。然后,可以从代码中的任何地方调用存储库(或“中间人”)。

    e、 g.(已使用) Json.NET 对于json序列化):

    public class MiddleMan
    {
        IRepository repository
        public MiddleMan(IRepository repository)
        {
          this.repository = repository;
        }
    
        public string GetJsonObjects(int id)
        {
          return JsonConvert.SerializeObject(repository.GetObject(id));
        }
    
    }
    

    然后控制器(或代码中的任何地方)可以调用这个中间类:

    public string Dataset(int id)
    {
      return new MiddleMan(repository).GetJsonObjects(id);
    }
    
        3
  •  0
  •   TonE    16 年前

    public static string GetContent(this Uri uri)
    {
          var myRequest = (HttpWebRequest) WebRequest.Create(uri);
          myRequest.Method = "GET";
          WebResponse myResponse = myRequest.GetResponse();
          var sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
          string result = sr.ReadToEnd();
          sr.Close();
          myResponse.Close();
          return result;
    }