Asp.net Core Razor Pages:如何简化CRUD表单重复代码?
如何在Razor Pages中减少CRUD表单的重复样板代码?
我有大量CRUD表单,存在大量重复的样板代码。例如:
<div class="form-group"> <label asp-for="MyModel.Property1" class="control-label"></label> <input asp-for="MyModel.Property1" class="form-control" /> <span asp-validation-for="MyModel.Property1" class="text-danger"></span> </div>
这段代码会针对每个表单的每个属性重复出现,除了下拉框等特殊情况外,结构基本一致。
我尝试过用EditorTemplates实现复用,但操作繁琐——需要为不同属性类型创建不同模板,使用时还得写@Html.EditorFor(m => m.MyModel.Property1, "_MyString"),而且Razor Pages似乎不推荐使用@Html.这类写法,应该有更合适的方案。
我花了大量时间尝试自定义TagHelper,但没成功。虽然可以用TagBuilder创建自己的TagHelper,但会丢失InputTagHelper等内置组件中的所有逻辑。我需要复用Input和Label TagHelper,因为它们包含大量与属性类型相关的逻辑,但目前找不到可行的办法。
我正在寻找一种通用的方式来减少样板代码,希望能找到完美的解决方案。
补充:在MVC中可以通过以下扩展方法实现,但在Razor Pages中,不针对每个模型创建的话无法使用:
public static IHtmlContent MyEditorFor<TModel, TResult>( this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TResult>> expression, string templateName = "MyDefaultTemplateName") { return htmlHelper.EditorFor(expression, templateName); }
内容的提问来源于stack exchange,提问作者HelpMe
相关产品推荐
相关产品推荐

