这可能是一个显而易见的问题,但是假设我想将一些数据传递到视图中,并立即希望使用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设计中,第二种方法是否可行,或者在技术上是错误的?
答案 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 。请注意,这是到服务器的往返,而不是第一种方法的替代。