首页 > 解决方案 > ASP.NET MVC 最佳实践:传递数据

问题描述

这可能是一个显而易见的问题,但假设我想将一些数据传递到我的视图中,并立即想用 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.netasp.net-mvchttpmodel-view-controller

解决方案


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

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

第一种方法

public ActionResult Index()
{
    SomeViewModel model = PopulateSomeViewModel();
    return View( model );
}

@Model.SomeData在 View 中访问模型。如果您想在同一个 HTTP 请求中访问 View 中的模型,它是一种强类型,并且是 MVC 中的常用方法。

第二种方法

$.ajax({
   url: API_URL,
   contentType: "application/json",
   method: "GET",
   data: JSON.stringify({"id": 1}, 
   success: function(result) { return result; }
});

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


推荐阅读