禁用时 TextBoxFor 值未传递给模型

Posted

技术标签:

【中文标题】禁用时 TextBoxFor 值未传递给模型【英文标题】:TextBoxFor value not passed to model when disabled 【发布时间】:2016-01-26 20:50:48 【问题描述】:

我有一个禁用的输入字段显示来自模型的数据。

<div class="form-group">
                    @html.LabelFor(model => model.first_name, "Förnamn", new
            
                @for = "inputFirstname",
                @class = "col-lg-3 control-label"
            )
                    <div class="col-lg-9">
                        @Html.TextBoxFor(model => model.first_name, new
                
                    @type = "text",
                    @class = "form-control",
                    @id = "inputFirstname",
                    text = Html.DisplayNameFor(model => model.first_name),
                    disabled="disabled"
                )
                    </div>
                </div>

我可以将此数据提交给控制器方法:

[HttpPost]

public ActionResult Index(RegistrationModel RegistrationModelViewModel)

当我添加disabled="disabled" 时,first_name 数据为空,如果我删除它,我会得到正确的数据。

我做错了什么?

【问题讨论】:

先问问自己,为什么希望禁用字段中的数据首先传递给模型? How do I submit disabled input in ASP.NET MVC?的可能重复 【参考方案1】:

如果您还想显示数据,您可能需要使用 readonly 属性:

@Html.TextBoxFor(model => model.first_name, new
    
        @readonly = "readonly"
    )

【讨论】:

【参考方案2】:

您需要在与禁用字段匹配的页面上添加&lt;input type="hidden" name="whateverName" /&gt;。默认不会发送到服务器。

【讨论】:

以上是关于禁用时 TextBoxFor 值未传递给模型的主要内容,如果未能解决你的问题,请参考以下文章

来自 JQuery 填充字段的值未绑定到 MVC 模型

值未传递给父组件[重复]

值未正确传递给 onClick 函数

Razor表单值未显示

如果下拉列值更改为某个值,则动态禁用TextBoxFor

颤振列表值未更新