Значение, установленное в скрытом поле, не отражено в функции готовности документа - PullRequest
0 голосов
/ 20 августа 2011

Я не могу получить значения из скрытого поля.Иногда я получаю ценности, а иногда и пустые.Пожалуйста, помогите.

Также дайте мне знать, можем ли мы сохранить 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 ]

1 голос
/ 20 августа 2011

Почему бы не использовать помощника для вставки скрытого поля?

@Html.HiddenFor(h => h.ContactID)

Вы не можете сохранить массив в скрытом поле как объект, но вы можете вставить значения массива в скрытое поле с помощьюразделители, чтобы отделить их.Вы превращаете его в строку и загружаете в представление.

0 голосов
/ 23 августа 2011

Прежде всего, в MVC 3.0 всегда старайтесь использовать свои собственные элементы управления из помощников HTML, например @Html.HiddenFor(c => c.Contact.Title), вместо

<input type="hidden" id="hdnSelectedContactID" value="@Model.Contact.ContactID" />

Также я пришел к выводу, что если есть другой элемент управления содно и то же выражение lamda (например, у моего элемента contactID и скрытого элемента управления contactID одинаковое выражение h => h.ContactID), я добавляю дополнительный атрибут "id", например @Html.HiddenFor(h => h.Contact.Title, new { id = "hdnContactID" } ).Иначе неверное значение может быть переопределено.

0 голосов
/ 20 августа 2011

В качестве дополнительной заметки вы МОЖЕТЕ сериализовать свой список в скрытое поле, используя функцию MVCContrib Html.Serialize.Однако это в основном для повторного использования на стороне сервера, аналогично viewstate

0 голосов
/ 20 августа 2011

Добавление: инициализация js-переменной с ArrayList:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...