自定义EditorFor或任何XXXXFor

时间:2012-08-24 18:11:56

标签: asp.net-mvc razor asp.net-mvc-4 mvc-editor-templates display-templates

每当我使用@Html.EditorForModel()后,标准模板都显示在asp.net mvc

Asp.net MVC模板中的默认值

<div class="editor-label">
  <label for="[MY-PROPERTY]">MY-PROPERTYNAME</label>
</div>
<div class="editor-field">
  <input id="[MY-PROPERTYID]" name="MY-PROPERTYNAME" type="text" value=""> 
  <span class="field-validation-valid" data-valmsg-for="MY-PROPERTYNAME" data-valmsg-replace="true"></span>
</div>
  
    

我想自定义此HTML的格式!!

  

但注意!!!!!

  1. 我知道这个功能 - &gt; @Html.EditorForModel("MY-TEMPLATE")
  2. 我知道这个功能 - &gt; @Html.EditorFor(p => p.MY-PROPERTY, "MY-TEMPLATE")
  3. 我知道这个功能 - &gt; Views\{CONTROLLER}\EditorTemplates\{CLASSNAME\TYPE}
  4. 我知道这个功能 - &gt; Views\Shared\EditorTemplates\{CLASSNAME\TYPE}
  5. 我的目标是修改整个项目的默认模板!

      

    无需为此完成整个项目!

    • 使用@Html.EditorForModel()时,每个属性都会生成HTML自定义!!

    新模板

    新模板将是这样的:

    <div class="control-group">
        @Html.LabelFor(p => p.PROPERTY, new { @class = "control-label" })
        <div class="controls">
            @Html.EditorFor(p => p.PROPERTY)
            <span class="help-inline"></span>
        </div>
    </div>
    

3 个答案:

答案 0 :(得分:2)

您可以为Object.cshtml文件夹创建Views\Shared\EditorTemplates\模板,@Html.EditorForModel()如果找不到更具体的模板,则会使用该模板(例如名为classname.cshtml的模板)

您可以进一步阅读Brad Wilson的Custom Object Templates

答案 1 :(得分:0)

为什么要重写ASP.NET MVC?重建Microsoft(具有大规模生产能力)过去5年创造的东西,这不是一件大事吗?

我建议(显然远不是唯一的生活方式)是根据您的需要定义尽可能多的DisplayTemplatesEditorTemplates,并使用它完成。

根据定义,框架是可扩展的。你要做的是更换其中一根主杆。我不知道它是否值得。 - 只是一个意见。

希望这有帮助。

答案 2 :(得分:0)

我试图做同样的事情。以某种方式重写或覆盖Editor,EditorFor或EditorForModel方法,因为我想要更改HTML输出。我发现这篇文章可能有所帮助:http://www.headcrash.us/blog/2011/09/custom-display-and-editor-templates-with-asp-net-mvc-3-razor/

正如@archil所说。您可以编写自己的对象模板,但重要的是它似乎在所有情况下都使用。即使你有一个特定类型的模板,这个模板也被用作&#34; master&#34;模板。