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

时间:2009-10-29 16:00:00

标签: asp.net-mvc

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

/Repository/Dataset/5

Repository控制器的Dataset操作将数据集5的内容作为Json返回。

如何从Uri调用此方法并将响应解释为对象内的Json?

非常感谢。

3 个答案:

答案 0 :(得分:0)

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

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

客户端电话$.getJSON

答案 1 :(得分:0)

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

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

例如(使用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);
}

答案 2 :(得分:0)

目前我将在这些方面实现一个uri扩展方法,为Uri创建一个WebRequest对象。

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;
}
相关问题