You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:33:15