在视图上更改 htmlAttribute 名称时模型绑定不起作用
Model binding isn't working when htmlAttribute Name is changed on View
我正在使用 ASP.NET MVC 以这种方式 post 控制器的强类型视图:
@using MyApp.Model
@model UserTest
@{
Layout = null;
}
@using (Html.BeginForm())
{
<div>
<p>Name: @Html.TextBoxFor(u => u.Data, new { Name = "txtName" })</p>
</div>
<div style="clear:left; padding-top: 15px">
<input type="submit" value="Create" id="btnSubmit" />
</div>
}
在控制器上:
[HttpPost]
public ActionResult Create(UserTest userdata)
{
}
当我 post 表单时,收到的 userdata
只有 属性 作为 null
值
但是,如果我以这种方式删除更改文本框名称 属性 的 htmlAttribute
:
@using (Html.BeginForm())
{
<div>
<p>Name: @Html.TextBoxFor(u => u.Data)</p>
</div>
<div style="clear:left; padding-top: 15px">
<input type="submit" value="Create" id="btnSubmit" />
</div>
}
当我 post 表单时,收到的 userdata
具有有效的 属性,其值已正确绑定。
我想知道我是否遗漏了什么,因为这看起来像是一个错误。如果是这种情况,我是否应该避免完全更改 MVC 助手上生成的 HTML 对象的名称?
我的MVC版本是5.2.2.0,框架运行时版本是:v4.0.30319
我很欣赏这方面的见解。
should I avoid changing the names of the generated HTML objects on the MVC helpers altogether?.
是的。输入元素的名称使模型绑定起作用。
所以不,不是错误。不要改变它们。
你没有解释为什么你想改变它们,但你可以使用不同的属性来完成你想要的。
这不是错误。这是预期的行为。
模型绑定的工作原理是将浏览器以 post 形式发送的 key/value 对绑定到模型属性(或视图数据)。表单输入的 name
属性用作 POST 请求中提交的表单数据的键。
当您使用 HTML 帮助程序呈现表单字段时,框架会自动生成所需的适当 name
属性,以确保该字段将正确绑定到 属性 中指定的您传递给助手的表达式。
如果更改 name
,则会破坏表单输入与其绑定的 属性 之间的 仅 连接。
我正在使用 ASP.NET MVC 以这种方式 post 控制器的强类型视图:
@using MyApp.Model
@model UserTest
@{
Layout = null;
}
@using (Html.BeginForm())
{
<div>
<p>Name: @Html.TextBoxFor(u => u.Data, new { Name = "txtName" })</p>
</div>
<div style="clear:left; padding-top: 15px">
<input type="submit" value="Create" id="btnSubmit" />
</div>
}
在控制器上:
[HttpPost]
public ActionResult Create(UserTest userdata)
{
}
当我 post 表单时,收到的 userdata
只有 属性 作为 null
值
但是,如果我以这种方式删除更改文本框名称 属性 的 htmlAttribute
:
@using (Html.BeginForm())
{
<div>
<p>Name: @Html.TextBoxFor(u => u.Data)</p>
</div>
<div style="clear:left; padding-top: 15px">
<input type="submit" value="Create" id="btnSubmit" />
</div>
}
当我 post 表单时,收到的 userdata
具有有效的 属性,其值已正确绑定。
我想知道我是否遗漏了什么,因为这看起来像是一个错误。如果是这种情况,我是否应该避免完全更改 MVC 助手上生成的 HTML 对象的名称?
我的MVC版本是5.2.2.0,框架运行时版本是:v4.0.30319
我很欣赏这方面的见解。
should I avoid changing the names of the generated HTML objects on the MVC helpers altogether?.
是的。输入元素的名称使模型绑定起作用。
所以不,不是错误。不要改变它们。
你没有解释为什么你想改变它们,但你可以使用不同的属性来完成你想要的。
这不是错误。这是预期的行为。
模型绑定的工作原理是将浏览器以 post 形式发送的 key/value 对绑定到模型属性(或视图数据)。表单输入的 name
属性用作 POST 请求中提交的表单数据的键。
当您使用 HTML 帮助程序呈现表单字段时,框架会自动生成所需的适当 name
属性,以确保该字段将正确绑定到 属性 中指定的您传递给助手的表达式。
如果更改 name
,则会破坏表单输入与其绑定的 属性 之间的 仅 连接。