gpt4 book ai didi

asp.net-mvc - 根据 Html.TextBoxFor 的条件设置禁用属性

转载 作者:行者123 更新时间:2023-12-03 05:19:57 25 4
gpt4 key购买 nike

我想根据 asp.net MVC 中 Html.TextBoxFor 的条件设置禁用属性,如下所示

@Html.TextBoxFor(model => model.ExpireDate, new { style = "width: 70px;", maxlength = "10", id = "expire-date" disabled = (Model.ExpireDate == null ? "disable" : "") })

这个助手有两个输出:disabled=“disabled”或disabled=“”。两个主题都会禁用文本框。

如果 Model.ExpireDate == null,我想禁用文本框,否则我想启用它

最佳答案

有效的方法是:

disabled="disabled"

浏览器也可能接受 disabled="",但我建议您使用第一种方法。

话虽这么说,我建议您编写一个自定义 HTML 帮助程序,以便将这个禁用功能封装到一段可重用的代码中:

using System;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;

public static class HtmlExtensions
{
public static IHtmlString MyTextBoxFor<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);
}
}

你可以这样使用:

@Html.MyTextBoxFor(
model => model.ExpireDate,
new {
style = "width: 70px;",
maxlength = "10",
id = "expire-date"
},
Model.ExpireDate == null
)
<小时/>

您可以为这个助手带来更多智能:

public static class HtmlExtensions
{
public static IHtmlString MyTextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
object htmlAttributes
)
{
var attributes = new RouteValueDictionary(htmlAttributes);
var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
if (metaData.Model == null)
{
attributes["disabled"] = "disabled";
}
return htmlHelper.TextBoxFor(expression, attributes);
}
}

现在您不再需要指定禁用条件:

@Html.MyTextBoxFor(
model => model.ExpireDate,
new {
style = "width: 70px;",
maxlength = "10",
id = "expire-date"
}
)

关于asp.net-mvc - 根据 Html.TextBoxFor 的条件设置禁用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6660146/

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