当没有Razor视图时,视图引擎就像这样
ViewEngines.Clear();
ViewEngines.Engines.Add(new MobileCapableWebFormViewEngine("Mobile", Controllers.SafetyLineController.MobileViewFormatChooser) { NotSupportedViewName = "HttpExceptionNotImplemented.Mobile" });
ViewEngines.Engines.Add(new WebFormViewEngine());
然后我将其更改为以下
ViewEngines.Clear();
ViewEngines.Engines.Add(new MobileCapableRazorViewEngine("Mobile", Controllers.SafetyLineController.MobileViewFormatChooser));
ViewEngines.Engines.Add(new MobileCapableWebFormViewEngine("Mobile", Controllers.SafetyLineController.MobileViewFormatChooser) { NotSupportedViewName = "HttpExceptionNotImplemented.Mobile" });
ViewEngines.Engines.Add(new RazorViewEngine());
ViewEngines.Engines.Add(new WebFormViewEngine());
这对普通视图很好,但整个网站的移动视图完全被破坏了。无论您是通过实际的移动设备到达那里,还是使用按钮,点击任何移动页面都会在浏览器中显示一个空白的白色屏幕。调试并不是特别有用,因为这只有在站点部署到开发机器上的IIS服务器后才会发生。本地测试完全正常(我们在本地使用内置的ASP.NET Web服务器)。
看起来这是视图引擎设置的一些问题,但我无法弄清楚我的谷歌搜索研究是什么。
白屏发生时出现的错误是
Exception Thrown:
Type: System.InvalidOperationException
Message: The view at '~/Views/User/History.Mobile.aspx' must derive from WebViewPage, or WebViewPage<TModel>.
Source: System.Web.Mvc
所以我猜一般来说,当加载任何.aspx或.ascx移动视图时会出现问题。