Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC中扩展模板的HiddenFor_C#_Asp.net Mvc 4_Mvc Editor Templates - Fatal编程技术网

C# 在ASP.NET MVC中扩展模板的HiddenFor

C# 在ASP.NET MVC中扩展模板的HiddenFor,c#,asp.net-mvc-4,mvc-editor-templates,C#,Asp.net Mvc 4,Mvc Editor Templates,我认为Html.HiddenFor可以使用Html.DisplayFor或Html.EditorFor等模板。不幸的是,该方法不像其他方法那样接受模板名 我知道,解决方法是使用DisplayFor/EditorFor模板,该模板具有hiddenfor。但是我想了解如何扩展Html.HiddenFor方法。有人吗 关于存在接受附加参数的重载-htmlAttributes。您可以使用它向结果标记添加一些属性 第二种方法是在其中一个文件夹中创建razor局部视图 ~/Areas/AreaName/Vi

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

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


关于

存在接受附加参数的重载-
htmlAttributes
。您可以使用它向结果标记添加一些属性

第二种方法是在其中一个文件夹中创建razor局部视图

~/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

似乎被错误的类比误导了
HiddenFor
标记完全对应。就像
TextBoxFor
CheckBoxFor
等。这些方法不是为使用模板而设计的<另一侧的code>DisplayFor
/
EditorFor
是专门创建的,用于项目中定义的模板。因此,你所要求的是不可能开箱即用的


但是,您始终可以使用您可能需要的任何参数集和逻辑为
HiddenFor
定义自己的重载。

以下是您要做的,您可以将其创建为一个编辑器模板,因为,
HiddenFor
相当于
TextBoxFor
CheckboxFor
等辅助方法

您可能也希望有一个真正的编辑器,所以将真正的编辑器放在
~/Shared/EditorTemplates
下。我们将把我们的“隐藏编辑器”放在您希望使用它的控制器下

~/Views/ControllerName/EditorTemplates/ModelName.cshtml
假设我们有一个
模型

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);
然后我们假设我们有一个模型,其中包含一个
作为属性。从我们的主要观点来看,我们这样称呼我们的“隐藏编辑器”

@Model Foo

@Html.EditorFor(f => f.Person)

容易的豌豆柠檬挤压。有点老套,但很有魅力

谢谢你告诉我怎么做,但正如我在问题中所说的,我已经知道这是一个可能的解决方法:-)这不是为你@float。这是为了拯救下一个像我这样的家伙,他在谷歌上发现这个问答时间太长了。