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

时间:2018-07-25 17:01:10

标签: asp.net asp.net-mvc http model-view-controller

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

Function buildAr2(v, ByVal vColumn&, Optional criteria) As Variant
' Purpose: Helper function to check for existing value e.g. in column 24 (=X)
' Note:    called by main function MultiCriteria in section [2]
Dim found&, found2&, i&, n&, ar: ReDim ar(0 To UBound(v) - 1)
howMany = 0      ' reset boolean value to default
  For i = LBound(v) To UBound(v)
    If Len(Trim(v(i, vColumn))) > 0 Then
       ar(n) = i
       n = n + 1
    End If
  Next i
  If n < 2 Then
     howMany = n: n = 2
  Else
     howMany = n
  End If
  ReDim Preserve ar(0 To n - 1)
  buildAr2 = ar
End Function

,然后使用Razor语法public ActionResult Index() { SomeViewModel model = PopulateSomeViewModel(); return View( model ); }

在视图中访问

但是,我也了解到我可以(应该吗?应该不应该?)使用jQuery的HTTP @Model.SomeData方法从视图中调用get方法:

PopulateSomeViewModel()

,然后根据需要处理数据。

一般来说,在ASP.NET MVC和MVC设计中,第二种方法是否可行,或者在技术上是错误的?

1 个答案:

答案 0 :(得分:1)

  

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

每个都有自己的用法,因此没有对与错。

第一种方法

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

在View中以@Model.SomeData的身份访问模型。如果要在 相同的HTTP请求 中的View内部访问模型,则它是MVC中的一种强类型通用方法。

第二种方法

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

仅在页面完全加载后需要从客户端访问服务器端数据的情况下,才使用Ajax 。请注意,这是到服务器的往返,而不是第一种方法的替代。