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

已安装NuGet包后,MVC跨项目用RazorGenerator实现分部视图的方法

嘿,我之前也折腾过跨项目共享Razor分部视图的事儿,既然你已经装好了对应的NuGet包,那接下来跟着这些步骤走应该就能搞定:

跨项目使用RazorGenerator实现分部视图的后续操作步骤

1. 配置分部视图的生成属性

  • 找到你要共享的.cshtml分部视图文件,右键选择属性
  • 在属性面板里,把生成操作设置为RazorGenerator,同时确认自定义工具已经是RazorGenerator(安装NuGet包后通常会自动配置,但手动检查下更稳妥)
  • 保存设置后,RazorGenerator会自动生成对应的.cs代码文件,你可以在解决方案资源管理器里展开该视图文件看到这个生成文件

2. 确保生成的视图类可被外部访问

  • 打开自动生成的.cs文件,默认生成的类可能是internal访问级别,你需要手动把它改成public,这样其他项目才能引用到
  • 更高效的方式:在分部视图的顶部添加@inherits System.Web.Mvc.WebViewPage(如果需要传模型就加上@model 你的模型类型),这样生成的类会自动设置为public,不用手动修改代码

3. 在目标MVC项目中引用共享项目

  • 右键你的目标MVC项目,选择添加引用,找到包含分部视图的共享项目并勾选添加
  • 确保共享项目已经正常编译,生成的DLL能被目标项目正确引用

4. 在目标项目中调用共享分部视图

  • 在目标项目的视图里,用@Html.Partial或@Html.RenderPartial来调用,记得指定完整的视图路径或者生成的类类型:
    // 通过视图路径调用
    @Html.Partial("~/Views/Shared/MySharedPartial.cshtml", Model)
    // 或者直接通过生成的类类型调用
    @Html.Partial(typeof(MySharedProject.Views.Shared.MySharedPartial), Model)
    

5. 解决视图路径找不到的问题

  • 如果遇到“视图不存在”的错误,可以在目标项目的Global.asax中自定义视图引擎,添加共享项目的视图路径:
    protected void Application_Start()
    {
        // 清除默认视图引擎,添加自定义配置
        ViewEngines.Engines.Clear();
        ViewEngines.Engines.Add(new RazorViewEngine
        {
            PartialViewLocationFormats = new[]
            {
                "~/Views/{1}/{0}.cshtml",
                "~/Views/Shared/{0}.cshtml",
                // 这里替换成你的共享项目相对路径
                "~/../MySharedProject/Views/Shared/{0}.cshtml"
            }
        });
    }
    

6. 调试验证

  • 编译所有项目,启动目标MVC项目,检查分部视图是否正常渲染
  • 如果出现编译错误,优先检查:共享项目的生成操作是否正确、视图类是否为public、项目引用是否正常

内容的提问来源于stack exchange,提问作者Bilal Tüylü

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:27:28