【发布时间】:2018-06-08 10:40:15
【问题描述】:
我将 MVC 添加到我现有的 webforms 项目中。一切顺利,除了 RenderAction 正在寻找 .aspx 文件
The view '_Mainmenu.cshtml' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Areas/NewPages/Views/Shared/_Mainmenu.cshtml.ascx
视图是
~/Areas/NewPages/Views/Shared/_Mainmenu.cshtml
而且它确实存在于该文件夹中。谁能帮我解决这个问题。 其他一切 MVC 都可以正常工作我什至 PITA EntityFramework 也可以工作
任何帮助将不胜感激
【问题讨论】:
-
确保 Razor 引擎首先由
ViewEngines.Engines.Add(new RazorViewEngine());加载,然后是ViewEngines.Engines.Add(new WebFormViewEngine());。为什么使用双 cshtml + ascx 扩展进行用户控制?如果您想从 MVC 视图搜索中删除 Web 表单引擎,请使用ViewEngines.Engines.Clear()& 然后添加ViewEngines.Engines.Add(new RazorViewEngine());。 -
@TetsuyaYamamoto 我没有使用双重扩展。该视图名为
..._Mainmenu.cshtml,应用程序正在寻找..._Mainmenu.cshtml.aspx,因为它不存在,所以它永远不会找到。请把ViewEngines.Engines.Add(new RazorViewEngine());和ViewEngines.Engines.Add(new WebFormViewEngine());放在哪里。我搜索了ViewEngines,但在我的项目中找不到该术语 -
嗯,默认情况下,MVC 优先考虑 Web 表单视图引擎(ASPX 文件),因此您需要通过将这些行放在 Application_Start 中来从 MVC 上下文中删除 Web 表单视图引擎支持:
ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(new RazorViewEngine());。 -
@TetsuyaYamamoto 感谢我无意中解决了这个问题,现在我得到了这个文件名
~/Areas/NewPages/Views/Default/_Mainmenu.cshtml.cshtml -
你现在遇到双cshtml扩展了吗?如果是真的,从
RazorEngine创建一个类(例如public class CustomRazorEngine : RazorViewEngine)并在构造函数中声明AreaViewLocationFormats:AreaViewLocationFormats = new[] { "~/Areas/{2}/Views/{1}/{0}.cshtml" }。然后在Application_Start注册自定义视图:ViewEngines.Engines.Add(new CustomRazorEngine());
标签: c# asp.net asp.net-mvc