MVC:未找到任何视图,未搜索任何位置。那为什么呢?

时间:2013-09-12 11:24:45

标签: c# asp.net-mvc razor view viewengine

登录页面的图像(可点击图片):http://i.snag.gy/sHPyQ.jpg

似乎(虽然是调试查看器),ViewEnginesViewEngines集合中都是(razor + webforms,我正在使用第一个),并且它们都可以查找视图(手动)并显示它们,也尝试手动。

那么为什么他们不能自己做呢?这只是一种行动方法,仅此而已:

public ViewResult Login()
{
    return View();
}

重大更新

我已覆盖OnResultExecuting方法:

protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
    if (filterContext.Result is ViewResult)
    {
        if (((ViewResult)filterContext.Result).ViewEngineCollection.Count == 0)
        {
            ((ViewResult)filterContext.Result).ViewEngineCollection.Add(new RazorViewEngine());
        }
    }

    base.OnResultExecuting(filterContext);
}

事实证明,我现在每次和每个视图都需要向IViewEngine添加新的ViewResult。那为什么会这样呢?即使ViewEngines.Engines集合不为空?

次要更新。

ViewEngineCollection空闲的某个时刻停止为空。

3 个答案:

答案 0 :(得分:1)

您是否定义了母版页?

如果解决方案的根目录中有_ViewStart.chstml文件,则引擎可能会尝试加载母版页以与您的视图结合。

要跳过母版页,请告诉您的视图不要使用母版页。将以下内容添加到视图

@{
    Layout = null;
}

或确保_viewStart.cshtml文件中引用的母版页存在。

答案 1 :(得分:0)

您可能没有正确ViewEngines配置(或没有)。

尝试添加手动查看引擎,以确定某处是否存在配置错误。

将此类内容添加到Application_Start()的{​​{1}}方法。

Global.asax

这应该初始化Razor视图引擎,如果mvc开始搜索位置,你就会以某种方式关闭配置中的剃刀。

答案 2 :(得分:0)

ViewEngineCollection空闲的某个时刻停止为空。

这可能只涉及旧程序集的一些ASP.NET缓存,这些缓存由于某些原因而未被新程序集更新。这种情况经常发生,我必须清除缓存才能使一些新代码生效。