MVC 4 Intranet应用程序,多种布局



我在开发MVC4 Intranet应用程序时遇到错误,尝试使用多个页面布局。正如我所看到的,当使用互联网应用程序时,问题并不存在,这里是快速演示。

使用Razor引擎创建新的互联网应用程序。将文件_Layout.cshtml复制到Popup_Layout.chshtml(均在~/Views/Shared中),并剥离Popup_LLayout中的页眉和页脚部分。在~/Controllers/HomeController.cs中,用以下代码修改索引操作:

    public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
        string layout = "_Layout";
        if (DateTime.Now.Ticks % 2 == 1)
        {
            layout = "Popup_Layout";
        }
        return View("Index", layout);
    }

这创建了一个简单的游戏,随机选择使用两个可用页面布局中的一个。当编译和测试时,通过在浏览器中刷新,我们可以看到带有或不带有页眉和页脚部分的起始页。

现在,如果我们重复完全相同的场景,唯一的区别是项目是Intranet应用程序-构建正常,但在浏览器中刷新而不是获得没有页眉和页脚的页面,我们会得到服务器错误,Stack跟踪的顶部显示:

    [InvalidOperationException: The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
    ~/Views/Home/Index.aspx
    ~/Views/Home/Index.ascx
    ~/Views/Shared/Index.aspx
    ~/Views/Shared/Index.ascx
    ~/Views/Home/Popup_Layout.master
    ~/Views/Shared/Popup_Layout.master
    ~/Views/Home/Popup_Layout.cshtml
    ~/Views/Home/Popup_Layout.vbhtml
    ~/Views/Shared/Popup_Layout.cshtml
    ~/Views/Shared/Popup_Layout.vbhtml]
    System.Web.Mvc.ViewResult.FindView(ControllerContext context) +399386

或者,布局可以在视图本身中通过向layout属性赋值~/Views/Shared/Popup_layout.cshtml来确定,但它也会引发错误。

我没有找到使用网络的解决方案,所以我希望有人能在这里帮助我。感谢

尝试删除Popup_Layout.cshtml,然后为Popup_LLayout创建一个新的空视图页面,而不是复制粘贴_Layout.chshtml。在你有了一个新的空视图页面后,复制粘贴内容(如果你愿意的话)。我不知道为什么,但我在我的测试项目中尝试了一下,结果成功了。我使用了一个常规的web应用程序(而不是intranet应用程序),但我遇到了与您描述的相同的视图丢失错误。

我认为关键是视图文件的创建方式。我复制了这个文件并重命名了它,发现了同样的错误。当我正确地创建了一个新视图,然后复制了内容时,一切都正常了。

亲爱的noviKorisnik,我试图按照你在这里写的内容复制你的错误,但我没有得到你指定的错误。您的错误第一行是未找到视图"索引"或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:~/Views/Home/Index.aspx

我相信你错误地删除了index.cshtml。请确保您在正确的文件夹中有index.cshtml。如果您仍然收到错误,请提供更多详细信息。

最新更新