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

如何在Razor页面中无需Model前缀即可访问PageModel属性?

省略Razor页面Model前缀的两种常用方案

针对你提到的Razor页面必须加Model前缀访问属性的问题,有两种落地性很强的实现方式:


方案1:单页面快速适配(无.NET版本限制)

直接在对应Razor页面的代码块中声明和PageModel属性对应的快捷访问变量即可:

后台PageModel代码(和示例一致)
public class ContactModel : PageModel
{
    public Contact Contact { get; set; }
    
    public void OnGet()
    {
        Contact = new Contact
        {
            Name = "John"
        };
    }
}
前端Razor页面代码
@page
@model ContactModel
@{
    // 直接声明快捷访问变量,后续不需要再加Model前缀
    var Contact = Model.Contact;
}

<div>@Contact.Name</div>

如果需要访问的属性较多,你也可以给PageModel添加解构方法,一次性批量导出所有需要的属性:

// 给ContactModel添加解构方法
public void Deconstruct(out Contact contact)
{
    contact = Contact;
}

Razor页面中可以直接解构赋值:

@page
@model ContactModel
@{
    var (Contact) = Model;
}

<div>@Contact.Name</div>

方案2:全局统一配置(适合项目级批量省略前缀)

你可以通过自定义Razor页面基类+视图导入配置的方式,实现全局省略Model前缀:

  1. 首先定义泛型Razor页面基类
public abstract class CustomRazorPage<TModel> : RazorPage<TModel>
{
    // 直接把Model的属性对外暴露为页面级属性,可按项目需求扩展更多通用属性
    public Contact Contact => Model.Contact;
}
  1. 修改项目的_ViewImports.cshtml文件,添加以下配置,让所有Razor页面继承你自定义的基类:
@inherits CustomRazorPage<TModel>

配置完成后,所有Razor页面都可以直接写@Contact.Name,不需要再加Model前缀。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:03