我认为Html.HiddenFor
可以使用Html.DisplayFor
或Html.EditorFor
等模板。不幸的是,该方法不接受TemplateName
和其他方法一样。
我知道,解决方法是使用具有HiddenFors的DisplayFor / EditorFor模板。但我想了解如何扩展Html.HiddenFor
方法。任何人吗?
此致
答案 0 :(得分:5)
似乎你被错误的类比误导了。 HiddenFor
与<input type="hidden"/>
标记完全对应。就像TextBoxFor
,CheckBoxFor
等一样。这些方法并非设计为使用模板。另一侧的DisplayFor
/ EditorFor
是专门创建的,用于项目中定义的模板。因此,你所要求的是不可能开箱即用的。
但是,您始终可以使用任何参数集和您可能需要的逻辑为HiddenFor
定义自己的重载。
答案 1 :(得分:1)
有一个重载接受其他参数 - 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
答案 2 :(得分:1)
以下是您的操作,您将其创建为作为编辑器模板,因为Andre pointed out,HiddenFor
等同于{{1}等辅助方法}和TextBoxFor
。
您可能也希望拥有一个实际的编辑器,因此请将您的真实编辑器放在CheckboxFor
下。我们将把我们隐藏的编辑器#34;在您希望使用它的控制器下。
~/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);
属性的模型。从我们的主要观点来看,我们称之为隐藏编辑器&#34;像这样。
Person
易腻的柠檬挤压。有点hacky,但它就像一个魅力。