我无法从隐藏字段中检索值。有时我会得到价值观和有时它会变空。请协助。
另外让我知道我们可以在隐藏区域存储C#arraylist吗? 我的HTML看起来像这样......
<input type="hidden" id="hdnSelectedContactID" value="@Model.Contact.ContactID" />
<input type="hidden" id="hdnSelectedAddressList" value="@Model.Contact.AddressList" />
$(document).ready(function () {
_contactID = $("#hdnSelectedContactID").val();
_addressList = $("#hdnSelectedAddressList").val();
}
在document.ready方法中为其指定名称后,外部html(快速监视)显示如下...
outerHTML "<INPUT id=hdnSelectedContactID type=hidden name=hdnSelectedContactID>" String
outerHTML "<INPUT id=hdnSelectedAddressList value=Dell.USP.Business.Models.TelephoneList type=hidden name=hdnSelectedAddressList>" String
答案 0 :(得分:1)
为什么不使用帮助器插入隐藏字段?
@Html.HiddenFor(h => h.ContactID)
您不能将隐藏字段中的arraylist存储为对象,但您可以在带有分隔符的隐藏字段中插入arraylist的值以将它们分开。您将其转换为字符串并将其加载到视图中。
答案 1 :(得分:0)
添加:使用ArrayList初始化js-variable:
<script type="text/javascript">
var _addressList = @Html.Raw(string.Format("['{0}']", string.Join("','", Model.Contact.AddressList.ToArray().Select(s => HttpUtility.HtmlEncode(s.ToString())))));
$(document).ready(function () {
// test
alert(_addressList[0]);
});
</script>
答案 2 :(得分:0)
作为额外注释,您可以使用MVCContrib Html.Serialize函数将列表序列化为隐藏字段。然而,这基本上是服务器端重用,类似于viewstate
答案 3 :(得分:0)
首先在MVC 3.0中,总是尝试使用HTML帮助程序自己的控件,例如@Html.HiddenFor(c => c.Contact.Title)
,而不是
<input type="hidden" id="hdnSelectedContactID" value="@Model.Contact.ContactID" />
我还得出结论,如果有另一个具有相同lamda表达式的控件(例如我的contactID和隐藏的contactID控件都具有相同的h =&gt; h.ContactID表达式),我还要添加一个额外的“ id“属性,as
@Html.HiddenFor(h => h.Contact.Title, new { id = "hdnContactID" } )
。
否则错误的值可能会被覆盖。