如何在 MVC 中使布尔 HTML5 属性 ASP.Net“有条件”

本文关键字:有条件 ASP 属性 Net HTML5 布尔 MVC | 更新日期: 2023-09-27 18:31:48

我正在使用 ASP.Net MVC (5.2.3.0) 创建一个表单字段:

@Html.TextBoxFor(
    x => x.UserName, 
    new { 
        @class = "form-control", 
        placeholder = "Enter your username", 
        required = true, 
        autofocus = true 
});

到目前为止一切顺利,但现在我喜欢使autofocus属性成为条件。我该怎么做?

autofocus属性是一个布尔属性,W3C 声明:

注意:布尔值不允许使用值"true"和"false" 属性。要表示假值,该属性必须是 完全省略。

以下内容在 MVC 中不起作用,因为它仍然呈现 autofocus 属性,导致浏览器执行自动对焦:

autofocus = String.IsNullOrEmpty(this.Model.UserName)
autofocus = String.IsNullOrEmpty(this.Model.UserName) ? null : ""`

有人知道如何解决这个问题吗?

如何在 MVC 中使布尔 HTML5 属性 ASP.Net“有条件”

您可以在视图之前的某个位置创建一个属性字典:

@{
    var usernameAttrs = new Dictionary<string, object>
    {
        {"class ", "form-control"},
        {"placeholder  ", "Enter your username"},
        {"required", true},
    };
    if (String.IsNullOrEmpty(this.Model.UserName))
    {
        usernameAttrs.Add("autofocus", true);
    }
}

并在TextBoxFor()中使用它

@Html.TextBoxFor(x => x.UserName, usernameAttrs);

控制器中检查您的条件,如果为 true,则设置 ViewBag.Tag = autofocus 然后在您的视图中

@Html.TextBoxFor(
    x => x.UserName, 
    new { 
        @class = "form-control", 
        placeholder = "Enter your username", 
        required = true, 
        ViewBag.Tag 
});