我正在开发一个ASP.NET MVC Web应用程序,其中我有一个具有Uri属性的对象。 Uri包含以下形式的资源的restful链接:
/Repository/Dataset/5
Repository控制器的Dataset操作将数据集5的内容作为Json返回。
如何从Uri调用此方法并将响应解释为对象内的Json?
非常感谢。
答案 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;
}