我认为Html.HiddenFor
可以使用模板Html.DisplayFor
或Html.EditorFor
. 不幸的是,该方法不接受TemplateName
其他方法。
我知道,解决方法是使用具有 HiddenFors 的 DisplayFor/EditorFor 模板。但我想了解如何扩展该Html.HiddenFor
方法。任何人?
问候
我认为Html.HiddenFor
可以使用模板Html.DisplayFor
或Html.EditorFor
. 不幸的是,该方法不接受TemplateName
其他方法。
我知道,解决方法是使用具有 HiddenFors 的 DisplayFor/EditorFor 模板。但我想了解如何扩展该Html.HiddenFor
方法。任何人?
问候
好像你被错误的类比误导了。与标签HiddenFor
完全对应。<input type="hidden"/>
就像 等TextBoxFor
。CheckBoxFor
这些方法不是为使用模板而设计的。DisplayFor
/EditorFor
在另一边是专门为与项目中定义的模板一起使用而创建的。因此,您所要求的不可能是开箱即用的。
HiddenFor
但是,您始终可以使用任何一组参数和您可能需要的任何逻辑来定义自己的重载。
有一个接受附加参数的重载 - htmlAttributes
。您可以使用它为结果标签添加一些属性。
第二种方法是在其中一个文件夹中创建剃刀局部视图
~/Areas/AreaName/Views/ControllerName/DisplayTemplates/TemplateName.cshtml
~/Areas/AreaName/Views/Shared/DisplayTemplates/TemplateName.cshtml
~/Views/ControllerName/DisplayTemplates/TemplateName.cshtml
~/Views/Shared/DisplayTemplates/TemplateName.cshtml
有名字HiddenInput.cshtml
这就是您所做的,您将其创建为编辑器模板,因为正如Andre 指出的那样,它等同于andHiddenFor
之类的辅助方法。TextBoxFor
CheckboxFor
很可能你也想要一个真正的编辑器,所以把你的真正的编辑器放在~/Shared/EditorTemplates
. 我们将把我们的“隐藏编辑器”放在您希望使用它的控制器下。
~/Views/ControllerName/EditorTemplates/ModelName.cshtml
假设我们有一个Person
模型。
public class Person
{
public string First { get; set; }
public string Last { get; set; }
}
我们将创建一个局部视图。
@Model Person
@Html.HiddenFor(p => p.First);
@Html.HiddenFor(p => p.Last);
然后我们假设我们有一个包含 aPerson
作为属性的模型。从我们的主要观点来看,我们这样称呼我们的“隐藏编辑器”。
@Model Foo
@Html.EditorFor(f => f.Person)
易榨柠檬汁。有点hacky,但它就像一个魅力。