隐藏字段中设置的值未反映在文档就绪功能中

时间:2011-08-20 07:16:10

标签: jquery asp.net-mvc-3 jquery-ui

我无法从隐藏字段中检索值。有时我会得到价值观和有时它会变空。请协助。

另外让我知道我们可以在隐藏区域存储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

4 个答案:

答案 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" } )。 否则错误的值可能会被覆盖。