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