【问题标题】:Extend HiddenFor Templates in ASP.NET MVC在 ASP.NET MVC 中扩展 HiddenFor 模板
【发布时间】:2013-07-09 10:25:13
【问题描述】:

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

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

问候

【问题讨论】:

    标签: c# asp.net-mvc-4 mvc-editor-templates


    【解决方案1】:

    似乎你被错误的类比误导了。 HiddenFor 完全对应于 <input type="hidden"/> 标记。就像TextBoxForCheckBoxFor 等。这些方法不是为使用模板而设计的。另一边的DisplayFor/EditorFor 是专门为与项目中定义的模板一起使用而创建的。因此,您所要求的不是开箱即用的。

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

    【讨论】:

      【解决方案2】:

      有一个接受附加参数的重载 - 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

      【讨论】:

        【解决方案3】:

        这就是您所做的,您将其创建为编辑器模板,因为Andre pointed outHiddenFor 等价于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)
        

        简单的 peasy 柠檬榨汁。有点hacky,但它就像一个魅力。

        【讨论】:

        • 感谢您提供此方法,但正如我在问题中所说,我已经知道这是一种可能的解决方法:-)
        • 这不适合你@float。这是为了拯救像我这样在谷歌上搜索并发现此 Q/A 的人浪费大量时间。
        猜你喜欢
        • 2011-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        相关资源
        最近更新 更多