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

如何实现两个Web项目间Razor Page的共享复用?

用Razor类库共享Razor Pages搜索页面方案

完全可以用Razor Class Library(RCL)存放共享的.cshtml页面及其后台.cs文件,具体步骤如下:

1. 创建支持页面的Razor类库

  • 在解决方案中新建项目,选择Razor Class Library模板,创建时勾选「支持页面和视图」选项(如果没选,手动在项目里建Pages目录也可以)。
  • 类库生成后,直接在Pages目录下创建你的搜索页面,比如Search.cshtml(页面UI)和对应的Search.cshtml.cs(后台逻辑)。

2. 编写共享页面代码

  • 在Search.cshtml里写搜索表单、结果展示的Razor/HTML代码,和普通Razor Pages页面写法完全一致。
  • 后台Search.cshtml.cs里处理页面逻辑,比如调用Web API获取数据的逻辑,示例代码:
    public class SearchModel : PageModel
    {
        private readonly HttpClient _httpClient;
    
        public SearchModel(HttpClient httpClient)
        {
            _httpClient = httpClient;
        }
    
        [BindProperty(SupportsGet = true)]
        public string Query { get; set; }
        public List<SearchResult> Results { get; set; } = new();
    
        public async Task OnGetAsync()
        {
            if (!string.IsNullOrWhiteSpace(Query))
            {
                Results = await _httpClient.GetFromJsonAsync<List<SearchResult>>($"/api/search?q={Uri.EscapeDataString(Query)}");
            }
        }
    }
    
    注:依赖注入的服务(比如HttpClient)不用在RCL里配置,由宿主Web项目负责注入即可。

3. 在Web项目中引用并配置

  • 给内部、外部两个Web项目分别添加对这个RCL的项目引用(右键Web项目→添加→项目引用→选中你的RCL)。
  • 配置Web项目的路由,让它能访问RCL里的共享页面:
    在Web项目的Program.cs中,修改Razor Pages的配置:
    builder.Services.AddRazorPages()
        .AddRazorPagesOptions(options =>
        {
            // 自定义路由,让两个项目都能用"/search"访问共享页面
            options.Conventions.AddPageRoute("/Search", "/search");
        });
    
    如果不需要自定义路由,直接访问/Pages/Search也能打开页面,但自定义路由更友好。

4. 静态资源处理(若有)

  • 如果搜索页面用到CSS、JS等静态资源,把它们放在RCL的wwwroot目录下,Web项目会自动识别这些资源,使用方式和项目自身的静态资源一致,比如<link rel="stylesheet" href="/css/search.css" />。

5. 差异化展示(可选)

  • 如果两个项目需要对搜索页面做差异化调整,可以通过依赖注入实现:定义一个接口(比如ISearchConfig),在两个Web项目中分别实现不同的配置,注入到RCL的后台类中,页面根据配置渲染不同内容。

这样两个Web项目就能共用同一套搜索页面代码,修改一次即可同步更新,完全避免重复开发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:19:55