C# TwitterBootstrapMVC更改输入名称

C# TwitterBootstrapMVC更改输入名称,c#,asp.net-mvc,twitter-bootstrap,C#,Asp.net Mvc,Twitter Bootstrap,我正在将我的应用程序从MVC3 aspx迁移到MVC5 razor。我正在尝试使用以下命令将输入名称从Client.FirstName更改为FirstName: @(Html.Bootstrap().TextBoxFor(m => m.Client.FirstName).Data(new {@name = "FirstName"}) .Id("FirstName")) 我得到: <input name="Client.FirstName" class="form-cont

我正在将我的应用程序从MVC3 aspx迁移到MVC5 razor。我正在尝试使用以下命令将输入名称从Client.FirstName更改为FirstName:

 @(Html.Bootstrap().TextBoxFor(m => m.Client.FirstName).Data(new {@name = "FirstName"})
    .Id("FirstName"))
我得到:

<input name="Client.FirstName" class="form-control" id="FirstName" type="text" value="" data-name="FirstName">
我得到了以下结果:

<input id="FirstName" name="FirstName" type="text" value="" /><span class="field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="false">*</span>
因为我没有经验去弄清楚如何修理助手;我试着用twitterBootstrapMVC

非常感谢您的建议。

.HtmlAttribute将指定的html属性应用于元素。可以选择接受IDictionary作为参数

.Data的工作方式与.HtmlAttributes类似,但在每个属性前添加数据。在这种情况下,将应用attribute data name=FirstName

因此,使用.HtmlAttributesnew{@name=FirstName}代替.Data

这是。

使用

new { Name = "FirstName" }
而不是

new { @name = "FirstName" }

为什么要这样做?它将不再绑定到您的模型-这就是为什么您不能覆盖name属性。您是否为此使用了[DisplayNameFirstName]属性?@Ratatouille,这与设置输入的name属性无关。您实际要做的是什么。为什么要更改name属性并中断模型绑定?也许发布您想要的结果,如果您尝试设置itI样式,您可以始终使用`@Html.TextBox并添加类名和数据名属性。@Html.TextBox,得到:。我在控制器中使用formcollection。谢谢,我仍然得到name=Client.FirstName。谢谢,我使用的是版本3。
<input id="FirstName" name="FirstName" type="text" value="" /><span class="field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="false">*</span>
new { Name = "FirstName" }
new { @name = "FirstName" }