难以在同一个项目中结合WebForms和Razor

时间:2013-05-15 21:16:38

标签: asp.net-mvc asp.net-mvc-4 razor

  1. 我有一堆观点,我已经转移到Razor,因为我讨厌WebForms并且我们没有过多的观点需要改变,但还有一些我尚未得到的观点是在Webforms中。我们在.ascx中也有一些部分视图,我还没有将其中任何一个移到Razor,但它们都是从WebForms和Razor视图中引用的。
  2. 我们还拥有大多数观看次数的移动版本。如果我将非移动版本的视图更改为Razor,我也更改了移动版本。我们在网站上有一个按钮,您可以通过设置Cookie手动选择切换到移动视图或标准视图。
  3. 当没有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移动视图时会出现问题。

0 个答案:

没有答案