Как модель связывателя работает с 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" на имя элемента.
Когда пользователь выбирает другую опцию, кроме начальной, она возвращается к оригиналу.
Надеюсь это поможет!