在ASP.NET MVC中扩展HiddeFor模板
本文关键字:扩展 HiddeFor 模板 MVC ASP NET | 更新日期: 2023-09-27 18:21:34
我认为Html.HiddenFor
可以使用类似Html.DisplayFor
或Html.EditorFor
的模板。不幸的是,该方法不像其他方法那样接受TemplateName
。
我知道,解决方法是使用具有HiddenFors的DisplayFor/EditorFor模板。但我想知道如何扩展Html.HiddenFor
方法。任何人
问候
似乎你被错误的类比误导了。CCD_ 6恰好对应于CCD_。就像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所指出的,HiddenFor
等效于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);
然后我们将假设我们有一个包含Person
作为属性的模型。从我们的主要观点来看,我们这样称呼我们的"隐藏编辑器"
@Model Foo
@Html.EditorFor(f => f.Person)
简单的桃红色柠檬汁。有点古怪,但它很有魅力。