2

我有以下两项,一项是只读的:-

@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模型绑定器会绑定这两个项目吗?,或者它会忽略任何只读和任何禁用的字段?

4

2 回答 2

1

它将绑定它们,但只要您使用正确的数据填充它们,这无关紧要。此外,假设您正在使用视图模型,您可以让您的代码将这些模型映射到实体,只需忽略有问​​题的值。假设这是来自表单的标准 HTTP Post,HTTP 不会发布 disabled 或 readonly 字段,这意味着它们将为 null 或模型中的默认值,因此您需要考虑这一点。

如果您希望活页夹忽略这些值,请使用TextBoxDropDownList确保它们的名称与您的属性不同。如果您不使用“For”,则需要在视图中添加代码来设置值。

于 2013-08-07T13:40:32.417 回答
0

只读文本字段被绑定。

我一直在尝试找到解决未绑定下拉框值的方法。这是我想出的:

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

对视图中的每个 HTML 元素使用上面的代码(这将要求您记录每个 ID 输出)并将“xxx”替换为元素名称。

当用户选择除了所选初始选项之外的另一个选项时,它会恢复为原始选项。

希望这可以帮助!

于 2014-08-28T00:13:40.120 回答