gpt4 book ai didi

html - 设置可选的禁用属性

转载 作者:太空狗 更新时间:2023-10-29 15:52:01 24 4
gpt4 key购买 nike

我想禁用表单中的所有字段,这些字段在加载页面时具有值。比如在这个

<td>@Html.TextBoxFor(m => m.PracticeName, new { style = "width:100%", disabled = Model.PracticeName == String.Empty ? "Something Here" : "disabled" })</td>

我想像这样内联写一些东西。我不想使用 if-else 并使我的代码更大。也不欢迎使用 javascript/jquery。

我试着写 false/true,但是 1.它可能不是跨浏览器 2.Mvc 将它解析为像“True”和“False”这样的字符串。那我该怎么做呢?

附言我使用 ASP.NET MVC 3 :)

最佳答案

似乎是自定义助手的理想人选:

public static class HtmlExtensions
{
public static IHtmlString TextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> ex,
object htmlAttributes,
bool disabled
)
{
var attributes = new RouteValueDictionary(htmlAttributes);
if (disabled)
{
attributes["disabled"] = "disabled";
}
return htmlHelper.TextBoxFor(ex, attributes);
}
}

可以这样使用:

@Html.TextBoxFor(
m => m.PracticeName,
new { style = "width:100%" },
Model.PracticeName != String.Empty
)

助手显然可以更进一步,这样您就不需要传递额外的 bool 值,但它会自动确定表达式的值是否等于 default(TProperty) 并且它应用了 disabled 属性。

另一种可能性是这样的扩展方法:

public static class AttributesExtensions
{
public static RouteValueDictionary DisabledIf(
this object htmlAttributes,
bool disabled
)
{
var attributes = new RouteValueDictionary(htmlAttributes);
if (disabled)
{
attributes["disabled"] = "disabled";
}
return attributes;
}
}

您将与标准的 TextBoxFor 助手一起使用:

@Html.TextBoxFor(
m => m.PracticeName,
new { style = "width:100%" }.DisabledIf(Model.PracticeName != string.Empty)
)

关于html - 设置可选的禁用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com