Asp.Net MVC- Html.TextBoxFor - 将自动对焦 属性 设置为 false
Asp.Net MVC- Html.TextBoxFor - Set Autofocus property to false
我的 razor 视图上有两个输入字段。一个用于用户名,一个用于密码。
如果用户名具有通过 ViewBag 传递的值,那么我不想将焦点设置到用户名字段,而是将焦点设置到密码字段。但目前发生的情况是第一个用户名输入总是获得焦点。 "false" 值似乎没有任何作用。我有一个 google 周围并检查了其他一些 Stack Overflow 帖子,但我似乎仍然无法找到答案。
在我看来,我有这样简单的代码:
@Html.TextBoxFor(m => m.Username, new { @placeholder = "Username", autofocus = (ViewBag.Username == "" ? "autofocus" : "false"), value = ViewBag.Username })
@Html.PasswordFor(m => m.Password, new { @placeholder = "Password", autofocus = (ViewBag.Username == "" ? "false" : "autofocus") })
我知道我可以使用 JQuery 有条件地设置焦点,但我希望有一种方法可以通过文本框 Html Helper?
自动对焦是一个布尔属性。根据 spec,如果存在,则应列为 autofocus="autofocus"
或简单地列为 autofocus
。对于"turn it off",这是一种不将其添加为输入属性的情况。
按照优秀答案 here 中的建议,有几种方法可以满足您的需求。一种方法是创建一个扩展方法,您可以这样做:
像这样创建一个扩展方法:
public static class AttributesExtensions
{
public static RouteValueDictionary AutofocusIf(
this object htmlAttributes,
bool autofocus
)
{
var attributes = new RouteValueDictionary(htmlAttributes);
if (autofocus)
{
attributes["autofocus"] = "autofocus";
}
return attributes;
}
}
现在,当您创建用户名文本框时:
@Html.TextBoxFor(m => m.Username, new { @placeholder = "Username", value = (string) ViewBag.Username }.AutofocusIf(String.IsNullOrWhiteSpace((string) ViewBag.Username)))
我的 razor 视图上有两个输入字段。一个用于用户名,一个用于密码。
如果用户名具有通过 ViewBag 传递的值,那么我不想将焦点设置到用户名字段,而是将焦点设置到密码字段。但目前发生的情况是第一个用户名输入总是获得焦点。 "false" 值似乎没有任何作用。我有一个 google 周围并检查了其他一些 Stack Overflow 帖子,但我似乎仍然无法找到答案。
在我看来,我有这样简单的代码:
@Html.TextBoxFor(m => m.Username, new { @placeholder = "Username", autofocus = (ViewBag.Username == "" ? "autofocus" : "false"), value = ViewBag.Username })
@Html.PasswordFor(m => m.Password, new { @placeholder = "Password", autofocus = (ViewBag.Username == "" ? "false" : "autofocus") })
我知道我可以使用 JQuery 有条件地设置焦点,但我希望有一种方法可以通过文本框 Html Helper?
自动对焦是一个布尔属性。根据 spec,如果存在,则应列为 autofocus="autofocus"
或简单地列为 autofocus
。对于"turn it off",这是一种不将其添加为输入属性的情况。
按照优秀答案 here 中的建议,有几种方法可以满足您的需求。一种方法是创建一个扩展方法,您可以这样做:
像这样创建一个扩展方法:
public static class AttributesExtensions
{
public static RouteValueDictionary AutofocusIf(
this object htmlAttributes,
bool autofocus
)
{
var attributes = new RouteValueDictionary(htmlAttributes);
if (autofocus)
{
attributes["autofocus"] = "autofocus";
}
return attributes;
}
}
现在,当您创建用户名文本框时:
@Html.TextBoxFor(m => m.Username, new { @placeholder = "Username", value = (string) ViewBag.Username }.AutofocusIf(String.IsNullOrWhiteSpace((string) ViewBag.Username)))