在ASP.NET MVC中扩展HiddeFor模板

本文关键字:扩展 HiddeFor 模板 MVC ASP NET | 更新日期: 2023-09-27 18:21:34

我认为Html.HiddenFor可以使用类似Html.DisplayForHtml.EditorFor的模板。不幸的是,该方法不像其他方法那样接受TemplateName

我知道,解决方法是使用具有HiddenFors的DisplayFor/EditorFor模板。但我想知道如何扩展Html.HiddenFor方法。任何人

问候

在ASP.NET MVC中扩展HiddeFor模板

似乎你被错误的类比误导了。CCD_ 6恰好对应于CCD_。就像TextBoxForCheckBoxFor等一样,这些方法不是为使用模板而设计的。另一侧的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等效于TextBoxForCheckboxFor等辅助方法。

很可能您也想要一个真正的编辑器,所以将真正的编辑器放在~/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)

简单的桃红色柠檬汁。有点古怪,但它很有魅力。