使用TextBoxFor时,是否可以控制文本boxt的name属性?
视图中的此代码
@Html.TextBoxFor(m => m.SearchParams.someParam)
制作本
<input id="SearchParams_someParam" name="SearchParams.someParam" type="text" value="">
但我不希望我的输入名称是“SearchParams.someParam”,我希望它类似于
<input id="SearchParams_someParam" name="MyPreferedName" type="text" value="">
其中MyPreferedName来自相应模型中的.SearchParams.someParam的某些属性。
这可能吗?我知道@ Html.TextBox可以做到,但我不想在视图中对该名称进行硬编码。
答案 0 :(得分:21)
@Html.TextBoxFor(model => model.attr, new { Name = "txt1" })
只需使用“名称”代替“名称”
答案 1 :(得分:4)
似乎<{1}}方法将不允许您将TextBoxFor
密钥用作htmlAttribute。这有点意义,因为如果它确实允许您覆盖HTML名称属性,则该值不会在POST表单中正确绑定到您的模型。
而不是使用......
@name
我最终不得不使用......
@Html.TextBoxFor(x => Model.MyProperty, new { @name = "desired_name" }); // does not work
我不确定为什么第一个选项不起作用,但希望这有助于解决它。
答案 2 :(得分:1)
使用TextBox而不是TextBoxFor
@Html.TextBox("MyPreferedName", Model.SearchParams.someParam)
答案 3 :(得分:0)
这不行吗?
@Html.TextBoxFor(m => m.SearchParams.someParam, new { id="my_id" })
虽然对于您的具体情况,它更像是:
@Html.TextBoxFor(m => m.SearchParams.someParam, new { name = "MyPreferedName" })
在这里,您将找到MVC3
答案 4 :(得分:0)
TextBoxFor
不允许设置name属性。解决方法:
@Html.EditorFor(m => m.UserName, null, "user_name")
输出:
<input class="text-box single-line" id="user_name" name="user_name" type="text" value="" />