gpt4 book ai didi

asp.net-mvc - 有没有办法避免我在 MVC Razor View 中重复我的代码?

转载 作者:行者123 更新时间:2023-12-04 05:26:36 24 4
gpt4 key购买 nike

我需要做这样的事情:

<div class="editor-field">
@Html.EditorFor(model => model.A1)
@Html.ValidationMessageFor(model => model.A1)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.A2)
@Html.ValidationMessageFor(model => model.A2)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.A3)
@Html.ValidationMessageFor(model => model.A3)
</div>

我正在使用 MVC3 和 razor View 引擎,这对我来说是新的。我想要做的是避免使用 A1,A2,A3,A4 ... A20 重复相同的四行块。有什么方法可以使用帮助程序、模板或其他一些功能来实现它,这样我就不必重复多行代码。

最佳答案

一种选择是使用像@Ufuk 提到的部分 View 。

IMO 更好的方法是使用编辑器模板,利用 MVC 的内置约定。

而不是为 A1、A2 等设置单个属性。将它们放在 IEnumerable<Something> Somethings 中.

然后在您的 View 中执行此操作:
@Html.EditorFor(model => model.Somethings)
然后创建一个名为 Something.cshtml 的编辑器模板并将其放入 Shared\EditorTemplates ,MVC 将为每个循环做一个“隐式”并渲染出模型的编辑器模板中的任何内容:

<div class="editor-field">
@Html.EditorForModel()
@Html.ValidationMessageForModel()
</div>

不要使用 foreach 循环 - 这是不必要且可避免的代码汤。

编辑器模板 HTML 与部分、强类型和全部相同。区别在于查找文件的约定,而局部 View 需要明确的局部 View 名称。

这意味着如果您更改模型的类型,它将根据模型类型查找该模板,从而实现非常强大的基于约定的方法 - 这就是 MVC 的全部内容。

关于asp.net-mvc - 有没有办法避免我在 MVC Razor View 中重复我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5714704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com