为HTML帮助程序生成的重复名称属性

时间:2018-04-19 14:11:42

标签: c# asp.net-mvc asp.net-mvc-4 razor html-helper

通过https://validator.w3.org

验证时,我获得了重复的名称属性
@Html.EditorFor(model => model.User_Name, new { htmlAttributes = new { @class = "form-control", id = "txtFullNameRealtor", @Name = "txtFullNameRealtor", placeholder = "Full Name" } })

我在html源代码中得到了这个

<input Name="txtFullNameRealtor" class="form-control text-box single-line" id="txtFullNameRealtor" name="User_Name" placeholder="Full Name" type="text" value="" />

正如您所看到的,生成了两个名称属性Name="txtFullNameRealtor"name="User_Name"

有没有办法让它生成单个名称属性?

我希望我可以明确地设置Name属性。

3 个答案:

答案 0 :(得分:0)

你可以试试这个

@ Html.EditorFor创建与属性名称相同的名称。

如果您想要特定名称,可以使用@Html.Editor代替@html.EditorFor。我希望这有帮助

@Html.Editor("txtFullNameRealtor" er_Name, new { htmlAttributes = new { @class = "form-control", id = "txtFullNameRealtor",  placeholder = "Full Name" } }

答案 1 :(得分:0)

您可以通过以下方式实现这一目标:

@Html.TextBox("txtFullNameRealtor", Model.User_Name, new { @class = "a-class-name" })

因为看起来你想要一个文本框,你可以使用文本框帮助器。第一个参数是从哪里派生名称/ id,第二个参数是值,第三个是htmlAttribtues。还有更多的重载。

答案 2 :(得分:0)

用户Html.Editor()而不是Html.EditorFor() EditorFor将从“绑定”它的model属性推断出html元素名称。

编辑器允许您使用最后一个参数声明您想要的任何html名称。

public static MvcHtmlString Editor(
    this HtmlHelper html,
    string expression,
    string templateName,
    string htmlFieldName

听起来您将域模型直接绑定到UI。我建议创建一个包含所需属性名称的viewmodel,并在控制器中的视图模型和域模型之间进行转换。