5

每当我使用@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. 我知道这个功能-> @Html.EditorForModel("MY-TEMPLATE")
  2. 我知道这个功能-> @Html.EditorFor(p => p.MY-PROPERTY, "MY-TEMPLATE")
  3. 我知道这个功能-> Views\{CONTROLLER}\EditorTemplates\{CLASSNAME\TYPE}
  4. 我知道这个功能-> Views\Shared\EditorTemplates\{CLASSNAME\TYPE}

我的目标是修改整个项目的默认模板!

无需为此走遍整个项目!

  • 使用时@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>
4

3 回答 3

2

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

您可以进一步阅读Brad Wilson 的自定义对象模板

于 2012-08-24T18:52:43.983 回答
0

为什么要重写 ASP.NET MVC?重现微软(凭借其大规模生产能力)在过去 5 年中创造的东西不是一项艰巨的任务吗?

我建议(显然远非唯一的生活方式)是为你需要的类型定义尽可能多的DisplayTemplatesEditorTemplates你喜欢的类型并完成它。

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

希望这可以帮助。

于 2012-08-24T19:04:41.697 回答
0

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

正如@archil 所说。您可以编写自己的对象模板,但重要的是它似乎适用于所有情况。即使您有特定类型的模板,该模板也被用作“主”模板。

于 2013-11-19T11:22:11.147 回答