【发布时间】:2017-01-10 16:53:35
【问题描述】:
我有一个编辑器模板,其中一个表单控件被禁用:
@Html.TextBoxFor(m => m.MyField, new {@class = "form-control", disabled="disabled"})
编辑器模板在多个视图中使用,其中一个视图需要启用文本框,而在其他视图中需要禁用它。
是否可以对模板进行参数化,以便根据视图启用/禁用控件?
【问题讨论】:
-
将
DisableForm属性添加到您的视图模型? -
@stuartd 在这种情况下创建两个视图模型不是更好吗?
-
您喜欢哪一种,取决于您的具体情况。不过你can get the view name form within the view。
-
EditorFor()方法有一个用于additionalViewData的overload,因此您可以将值传递给模板并使用它来有条件地呈现属性 -
@StephenMuecke 假设 OP 使用 MVC 5.1 或更高版本,
EditorFor重载使用是可能的。但是在 MVC 4 及以下版本中,应该创建一个返回TextBoxFor的自定义 HTML 帮助程序,因为EditorFor在以前的版本中不支持additionalViewData属性。
标签: c# asp.net-mvc razor