我正在编写我的第一个ASP.Net网页并使用MVC。
我有一个字符串,我在部分视图中使用网格控件(DevExpress MVCxGridView)构建。在我的部分视图中,我使用的是HTML.Hidden帮助程序,如下所示。
' Create a hidden variable to pass back a comma-delimited string
Response.Write(Html.Hidden( "exclusionList", Model.ExclusionList))
此隐藏元素的值在客户端javaScript中分配:
exclusionListElement = document.getElementById("exclusionList");
// ...
exclusionString = getExclusionString();
exclusionListElement.value = exclusionString;
这似乎没有问题。
在我的控制器操作方法中:
<AcceptVerbs( HttpVerbs.Post )> _
Public Function MyPartialCallback(updatedItemList As myModel) As ActionResult
Dim myData As myModel = GetMyModel()
Return PartialView( "MyPartial", myModel.myList )
End Function
updatedItemList参数始终没有,并且排除列表不存在于Request.Forms中的任何位置。
我的问题是:
使用Html.Hidden的正确方法是什么,以便我可以访问MVC Controller Action方法中的数据。
向Request.Form添加“货物”变量是将数据发送回服务器端MVC Controller Action方法的最佳方式吗?它看起来像 twine和duct-tape 方法。是否有更结构化的方法?
答案 0 :(得分:0)
如果需要返回exclusionList
变量,则只需要在视图模型中添加一个与该名称完全匹配的属性。确保它的类型正确(在这种情况下看起来像string
),然后它应该为您在视图模型中自动填充该属性。
是的,不需要Response.Write
电话。相反,只需在视图中使用Html.HiddenFor(...)
帮助程序。
答案 1 :(得分:0)
查看生成的HTML。记下隐藏字段的name属性。使用此名称作为操作参数名称:
Public Function MyPartialCallback(exclusionList As string)