gpt4 book ai didi

asp.net-mvc - 有条件地禁用 Html.DropDownList

转载 作者:行者123 更新时间:2023-12-01 23:07:36 25 4
gpt4 key购买 nike

如何更改此 DropDownList 声明,以便有条件地启用/禁用禁用属性?

<%= Html.DropDownList("Quantity", new SelectList(...), new{@disabled="disabled"} %>

非工作示例:

<%= Html.DropDownList("Quantity", new SelectList(...), new{@disabled=Model.CanEdit?"false":"disabled"} %>

附:在整个语句周围添加 if 条件并不是理想的方法:)

编辑:基于this来自另一个问题的扩展方法我想出了以下扩展:

public static IDictionary<string, object> Disabled (this object obj, bool disabled)
{
return disabled ? obj.AddProperty ("disabled", "disabled") : obj.ToDictionary ();
}

然后可以用作

<%= Html.DropDownList("Quantity", new SelectList(...), new{id="quantity"}.Disabled(Model.CanEdit) %>

最佳答案

无需添加辅助方法,只需使用

<%= Html.DropDownList("Quantity", new SelectList(...), IsEditable == true ? new { @disabled = "disabled" } as object : new {} as object %>

如果您要删除 as object 条目,这将不起作用,因为默认情况下 new {} 是在运行时编译的动态对象,因此两个可能的对象必须具有相同的属性。但 Html 属性参数实际上只是一个对象,因此可以将这些动态转换为对象来解决这个问题。

此解决方案甚至允许您使用多个 HTML 属性,其中一个是可选的,另一个不是,即 class='whatever' 不是可选的,但 disabled 是这样您将 class='whatever' 放入两个对象中,但可选对象仅放入第一个对象中。 Dimitrov 的答案不支持除禁用之外的任何自定义属性。

关于asp.net-mvc - 有条件地禁用 Html.DropDownList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2089468/

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