我复制/粘贴这么多,我觉得我必须做些什么来改进这段代码。
或者我是否已经尽可能地采取DRY剃刀观点?
例如,我的EditPet.cshtml视图如下所示:
@model PetEditViewModel
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.Partial("_ValidationSummary", ViewData.ModelState)
@Html.HiddenFor(model => model.Item.ID)
@Html.EditorFor(m => m.Item)
@Html.Partial("_SaveOrCancelButtons")
}
我的EditShoe.cshtml视图如下所示:
@model ShoeEditViewModel
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.Partial("_ValidationSummary", ViewData.ModelState)
@Html.HiddenFor(model => model.Item.ID)
@Html.EditorFor(m => m.Item)
@Html.Partial("_SaveOrCancelButtons")
}
依此类推...适用于约30种不同型号。同上创建和删除视图。唯一不同的是顶部的模型声明。
我尝试/考虑的内容
使用Html.Partial()
帮助我避免了相当多的重复。但是进一步采取这条路线似乎是不合理的。
我已经研究过通用剃须刀视图了,但这已经是recommended against了,我见过的任何解决方案对我来说都显得过于复杂。
我考虑的第三种可能性是使用模板并自动生成这些视图。但我宁愿不采取这种方法,因为他们仍然需要维护(或每次重建)。
最后我考虑将重复的代码转换为editortemplate。但我认为将复制从一个地方转移到另一个地方没有任何好处。