Как модель связывателя работает с Readonly и отключена

У меня есть следующие два пункта, один из которых только для чтения:

@Html.TextBoxFor(model => model.Technology.Tag, new 
        { @readonly = "readonly" })

Пока другой отключен:-

@Html.DropDownListFor(model => model.Customer.NAME, ((IEnumerable<TMS.Models.AccountDefinition>)ViewBag.Customers).Select(option => new SelectListItem
{
    Text = (option == null ? "None" : option.ORG_NAME),
    Value = option.ORG_NAME.ToString(),
    Selected = (Model != null) && (Model.Customer != null) & (option.ORG_NAME == Model.Customer.NAME)
}), "Choose...", new { disabled = "disabled" })

будет ли связыватель модели asp.net mvc связывать эти два элемента?, или он будет игнорировать любые доступные только для чтения и любые отключенные поля?

2 ответа

Это свяжет их, но если вы наполнили их правильными данными, это не должно иметь значения. Кроме того, вы можете иметь свой код, который сопоставляет эти модели с сущностью, предполагая, что вы используете модели представлений, просто игнорируйте соответствующие значения. Предполагая, что это стандартная HTTP-запись из формы, HTTP не будет публиковать отключенные или доступные только для чтения поля, что означает, что они будут нулевыми или значениями по умолчанию в модели, поэтому вам необходимо учитывать это.

Если вы хотите, чтобы связыватель игнорировал эти значения, используйте TextBox а также DropDownList и убедитесь, что они не названы так же, как ваши свойства. Если вы не используете "For", вам нужно добавить код в представление для установки значений.

ReadOnly текстовые поля становятся связанными.

Я пытался найти способ обойти несвязанный выпадающий список для значений. Вот что я придумал:

 $('#xxx').change(function() {$(this).val(lastSel_xxx);}); 
var lastSel_xxx = $("#xxx option:selected").val();

Используйте приведенный выше код для каждого HTML-элемента в вашем представлении (для этого потребуется документировать каждый вывод идентификатора) и замените "xxx" на имя элемента.

Когда пользователь выбирает другую опцию, кроме начальной, она возвращается к оригиналу.

Надеюсь это поможет!

Другие вопросы по тегам