如何根据条件将禁用添加到 html 助手?
How to add disabled to html helper based on condition?
我试图阻止用户在某些情况下使用输入但是如果我向它添加 disabled
将其禁用,无论它的值为 true
或 false
.
这是我的代码:
@Html.TextBoxFor(model => model.inputName, new { @disabled = (condition ? "true" : "false") })
在任何情况下它都会被禁用。
因为是否禁用取决于你的disabled
属性而不是disabled
属性值
这是一个例子
<p>Last name: <input type="text" name="lname" disabled="" /></p>
<p>Last name: <input type="text" name="lname" disabled="true" /></p>
<p>Last name: <input type="text" name="lname" disabled="false" /></p>
如果你不想用Js来控制你的属性,我们可以通过if
条件判断为true来创建disabled
的元素,否则不会。
@if(condition)
{
Html.TextBoxFor(model => model.inputName, new { @disabled = "true" })
}
else
{
Html.TextBoxFor(model => model.inputName)
}
否则我们可以为此创建一个扩展方法。
public static class TextBoxForExtensions
{
public static IHtmlString TextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
object htmlAttributes,
bool disabled
)
{
var attributes = new RouteValueDictionary(htmlAttributes);
if (disabled)
{
attributes["disabled"] = "disabled";
}
return htmlHelper.TextBoxFor(expression, attributes);
}
}
那我们就可以用like
@Html.TextBoxFor(model => model.inputName, new{},condition)
正如我在对这个问题的评论中所说,您可以添加变量:
var myAttributes = condition ? new {@disabled = true, /* add some more here*/} : new {/*add more here*/}
然后你可以将它添加到你的助手中:
@Html.TextBoxFor(model => model.inputName, myAttributes)
我试图阻止用户在某些情况下使用输入但是如果我向它添加 disabled
将其禁用,无论它的值为 true
或 false
.
这是我的代码:
@Html.TextBoxFor(model => model.inputName, new { @disabled = (condition ? "true" : "false") })
在任何情况下它都会被禁用。
因为是否禁用取决于你的disabled
属性而不是disabled
属性值
这是一个例子
<p>Last name: <input type="text" name="lname" disabled="" /></p>
<p>Last name: <input type="text" name="lname" disabled="true" /></p>
<p>Last name: <input type="text" name="lname" disabled="false" /></p>
如果你不想用Js来控制你的属性,我们可以通过if
条件判断为true来创建disabled
的元素,否则不会。
@if(condition)
{
Html.TextBoxFor(model => model.inputName, new { @disabled = "true" })
}
else
{
Html.TextBoxFor(model => model.inputName)
}
否则我们可以为此创建一个扩展方法。
public static class TextBoxForExtensions
{
public static IHtmlString TextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
object htmlAttributes,
bool disabled
)
{
var attributes = new RouteValueDictionary(htmlAttributes);
if (disabled)
{
attributes["disabled"] = "disabled";
}
return htmlHelper.TextBoxFor(expression, attributes);
}
}
那我们就可以用like
@Html.TextBoxFor(model => model.inputName, new{},condition)
正如我在对这个问题的评论中所说,您可以添加变量:
var myAttributes = condition ? new {@disabled = true, /* add some more here*/} : new {/*add more here*/}
然后你可以将它添加到你的助手中:
@Html.TextBoxFor(model => model.inputName, myAttributes)