在view中 使用辅助器方法来创建表单元素,并通过controller中的传值动态控制元素的活性与非活性
例子:
@Html.TextBoxFor(x=>x.Name)
那么可以通过下面这种方式来使得生成的元素 非活性
@Html.TextBoxFor(x=>x.Name , new{disabled="disabled"})
但是我想动态的控制元素的活性与非活性(不通过JS在客户端实现)
然后我猜测的实验了下
@Html.TextBoxFor(x=>x.Name , new{disabled=""})
@Html.TextBoxFor(x=>x.Name , new{disabled="false"})
这两种生成的表单元素都是非活性的
貌似只要为元素添加 disabled特性(attribute)不管其有没有值都是非活性的
那么怎么通过辅助器方法,来控制生成元素的活性与非活性呢?
重申一下(不用JS)
PS:
<input
type="text"
value="@Model.Name"
@Html.Raw(Model.IsActive?"":"disabled='disabled'") />
这种方式可以达到我想要的目的
但是。。。。。我就想知道 通过辅助器方法 例如 @HTML.TextBoxFor()
怎么实现。。。。。
(毕竟,上面这种方式能实现,但是太麻烦了,还要为元素指定ID,Name 属性什么的,而辅助器的话,就不需要指定这些值,所以想弄个究竟。
且,如果是下拉菜单的话,如果使用HTML中的<select>元素更加麻烦,所以,,能还是不能,怎么弄??????跪谢
)
哎,,真是的
我自己找到了解决办法了。。
哈哈
之前一直没有想到,就在提问之后,却突然灵光一闪
@Html.TextBoxFor(x => x.Order.orders_type, PageState ? new{disabled="disabled"} : null)
这样就想了,,晕了
就算给有需要的人分享下吧
哈哈
晕了,这方法也不好
。。。
是这样的,
假如有的元素需要 添加其他HTML特性,而有些元素不需要。
那么。
╮(╯▽╰)╭ 算了,反正也是每个元素都写一遍。。。。。。。。。。。
都写一般 。。。。 好麻烦啊。。。。。。。。。。。。。。。。。。。。
自己扩展 HtmlHelper 方法就可以了