【问题标题】:Duplicate name attribute generated for the HTML Helper为 HTML Helper 生成的重复名称属性
【发布时间】:2018-04-19 14:11:42
【问题描述】:

我在通过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 属性由我明确设置在那里。

【问题讨论】:

  • 删除`@Name = "txtFullNameRealtor"`?
  • 您在属性声明中添加了第二个名称属性。
  • 我希望 @Name = "txtFullNameRealtor"` 成为名称属性,而不是默认生成的属性。
  • 在任何情况下,您都没有在使用HtmlHelper 方法时设置name 属性——该方法生成了正确的html,包括模型绑定和验证的name 属性。
  • 如果您想要不同的名称属性,只需手动创建输入(当您不想要模型绑定或验证时,使用 HtmlHelper 方法毫无意义)

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


【解决方案1】:

您可以通过以下方式实现:

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

看起来你想要一个文本框,你可以使用文本框助手。第一个参数是名称/id 的来源,第二个参数是值,第三个是 htmlAttribtues。还有更多的重载。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      你可以试试这个

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

      如果您想指定具体名称,您可以使用@Html.Editor 而不是@html.EditorFor。我希望这会有所帮助

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

      【讨论】:

      • 请阅读编辑。我希望 @Name = "txtFullNameRealtor"` 成为名称属性,而不是默认生成的属性。
      • 好的。明白了..你可以试试 html.Editor 而不是 html.EditorFor
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      相关资源
      最近更新 更多