已安装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ü
相关产品推荐
相关产品推荐

