ASP.NET MVC最佳实践:传递数据

ASP.NET MVC最佳实践:传递数据,asp.net,asp.net-mvc,http,model-view-controller,Asp.net,Asp.net Mvc,Http,Model View Controller,这可能是一个显而易见的问题,但假设我想将一些数据传递到我的视图中,并立即想用javascript处理它。看起来真正的MVC体系结构需要使用ViewModel传递这些数据: public ActionResult Index() { SomeViewModel model = PopulateSomeViewModel(); return View( model ); } 然后在视图中使用Razor语法@Model.SomeData 但是,我也知道我可以(应该?不应该?)使用jQ

这可能是一个显而易见的问题,但假设我想将一些数据传递到我的视图中,并立即想用javascript处理它。看起来真正的MVC体系结构需要使用ViewModel传递这些数据:

public ActionResult Index()
{
    SomeViewModel model = PopulateSomeViewModel();
    return View( model );
}
然后在视图中使用Razor语法
@Model.SomeData

但是,我也知道我可以(应该?不应该?)使用jQuery的HTTP
get
方法从视图中调用
PopulateSomeViewModel()
方法:

$().get("/SomeController/PopulateSomeViewModel")
然后根据需要处理数据

在ASP.NET MVC和一般的MVC设计中,第二种方法是好的还是技术上是错的

在ASP.NETMVC和一般的MVC设计中,第二个 方法可能是好的,还是技术上是错的

每个都有自己的用法,所以没有对错

第一种方法 作为
@model.SomeData
内部视图访问模型。它是一种强类型,如果您想在相同的HTTP请求中访问模型内部视图,则它是MVC中的常用方法

第二种方法
只有在页面完全加载后需要从客户端访问服务器端数据时,我们才使用Ajax。请注意,这是到服务器的往返过程,而不是第一种方法的替代方法。

通常,像
PopulateSomeViewModel()
这样的方法将是私有方法,而不是控制器端点。
public ActionResult Index()
{
    SomeViewModel model = PopulateSomeViewModel();
    return View( model );
}
$.ajax({
   url: API_URL,
   contentType: "application/json",
   method: "GET",
   data: JSON.stringify({"id": 1}, 
   success: function(result) { return result; }
});