Asp.net mvc 子对象的MVC帮助程序前缀属性名称?
我有如下的分层模型Asp.net mvc 子对象的MVC帮助程序前缀属性名称?,asp.net-mvc,Asp.net Mvc,我有如下的分层模型 public class MyModel { public MyFilters Filters {get;set;} } public class MyFilters { public string State {get;set;} } 我使用Html助手创建控件 @Html.TextBoxFor(m=>m.Filters.State) 当页面呈现其内容时,创建html元素如下 <input name="Filters.State" id="
public class MyModel
{
public MyFilters Filters {get;set;}
}
public class MyFilters
{
public string State {get;set;}
}
我使用Html助手创建控件
@Html.TextBoxFor(m=>m.Filters.State)
当页面呈现其内容时,创建html元素如下
<input name="Filters.State" id="Filters_State" type="text" value=""/>
它将属性名“Filters”作为ID&name属性的前缀。如何告诉MVC不要在ID和name属性前面加属性名。所以控件看起来像
<input name="State" id="State" type="text" value=""/>
您始终可以使用
文本框中的一个设置重载:
@Html.TextBoxFor(m => m.Filters.State, htmlAttributes: new { Name = "State", id = "State"})
当然是。否则,您将永远无法获得模型绑定。请不要更改name属性。你真正想做的是什么?如果您发回MyFilters
而不是MyModel
,则使用[Bind(Prefix=“…”)]
属性,但它不会在POST上绑定。@CodeCaster我在这里看不到控制器签名,绑定依赖于它。我还没有尝试过,但我认为这项工作会覆盖默认行为的textbox