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

ASP.NET Core 6中如何从自定义RazorPage类型访问HtmlHelper?

在ASP.NET Core 6中实现自定义RazorPage的简化语法调用

在ASP.NET Core 6的Razor系统中,RazorPage不再直接暴露HtmlHelper属性,而是通过依赖注入获取IHtmlHelper实例。你可以通过以下步骤实现和MVC 4/5中类似的简化语法:

1. 创建自定义RazorPage基类

通过[Inject]特性注入IHtmlHelper<TModel>,然后实现你的T方法:

using Microsoft.AspNetCore.Mvc.Razor;
using Microsoft.AspNetCore.Mvc.Rendering;

public abstract class CustomRazorPage<TModel> : RazorPage<TModel>
{
    [Inject]
    protected IHtmlHelper<TModel> Html { get; set; }

    public string T(string translationKey)
    {
        return Html.Translate(translationKey);
    }
}

// 为无模型的页面提供适配基类
public abstract class CustomRazorPage : CustomRazorPage<dynamic>
{
}

2. 配置Razor视图选项

在Program.cs中注册自定义基类,让所有Razor页面/视图都使用它:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews()
    .AddRazorOptions(options =>
    {
        // 配置Pages文件夹下Razor页面的基类
        options.PageBaseType = typeof(CustomRazorPage);
        // 配置Views文件夹下MVC视图的基类
        options.ViewBaseType = typeof(CustomRazorPage);
    });

var app = builder.Build();

// 其他中间件配置...
app.Run();

3. 在Razor视图/页面中使用简化语法

完成配置后,你就可以像之前一样在视图中直接调用@T方法:

@T("/path1/path2")

注意事项

  • 确保你的Translate扩展方法是针对IHtmlHelper<TModel>(或IHtmlHelper)编写的,适配ASP.NET Core的类型体系。
  • 如果项目同时包含Razor Pages和MVC视图,需同时配置PageBaseType和ViewBaseType。

内容的提问来源于stack exchange,提问作者Vincent

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:15:42