包含模型属性的Razor页面部件的单点维护

时间:2017-10-12 10:35:03

标签: asp.net-mvc razor

我的目标是创建许多类似的视图,这些视图仅在它们呈现的字段列表中有所不同。例如,许多创建视图用于不同的模型和不同的字段集。以下是脚手架Create.cshtml页面的摘录:

<div class="form-group">
    @Html.LabelFor(model => model.NameText, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.NameText, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.NameText, "", new { @class = "text-danger" })
    </div>
</div>

<div class="form-group">
    @Html.LabelFor(model => model.NameDefinition, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.NameDefinition, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.NameDefinition, "", new { @class = "text-danger" })
    </div>
</div>

<div class ="form-group">
    @Html.LabelFor(model => model.NameComment, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.NameComment, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.NameComment, "", new { @class = "text-danger" })
    </div>
</div>

我的理解是,部分视图可以在<div class="form-group"> . . . </div>代码块的上方,下方和之间添加。但我不知道它是否有能力使用对模型属性的引用(例如NameText),然后用代码块包装它。

我的理解是,@Helper指令已从Razor(MVC 6)中删除,并且没有给出任何简单的替换。

我已经将两个放在上面代码段之前的代码部分和后面的代码部分放入单个局部视图中。通过一个小技巧,两部分代码围绕上面的代码段合并,然后一切都发送到浏览器。但我还需要更多。 如何避免上述代码段中的代码重复?

我想拥有什么:

  • 许多类似的观点仅与字段列表有所不同
  • 强力打字
  • 许多视图常见的代码的单点维护

作为旁注:我应该如何搜索以便自己找到答案?

1 个答案:

答案 0 :(得分:0)

Peter Vogel的博客,Building a Useful HTML Helper for ASP.NET MVC Views提供了我正在寻找的东西。