2

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

看起来(虽然是调试查看器),它们都在集合ViewEngines中(剃须刀+网络表单,我使用第一个) ,并且它们都可以(手动)找到视图并显示它们,也可以手动尝试。ViewEngines

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

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);
}

事实证明,我现在所做的每一次和每一次视图都需要IViewEngineViewResult. 为什么会这样?即使ViewEngines.Engines集合不为空?

小更新。

ViewEngineCollection空闲的某个时间点停止了

4

3 回答 3

1

您是否定义了母版页?

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

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

@{
    Layout = null;
}

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

于 2013-09-12T14:56:35.637 回答
0

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

尝试手动添加到视图引擎以确定某处是否存在配置错误。

将类似这样的内容添加Application_Start()Global.asax.

protected void Application_Start()
{
   ViewEngines.Engines.Clear();
   ViewEngines.Engines.Add(new RazorViewEngine());
   // Other code
}

这应该会初始化 Razor 视图引擎,如果结果 mvc 开始搜索位置,那么您在配置中以某种方式关闭了 razor。

于 2013-09-12T11:41:53.427 回答
0

ViewEngineCollection空闲的某个时间点停止了

这可能只是指旧程序集的一些 ASP.NET 缓存,由于某种原因,新程序集没有更新。这种情况不时发生,我必须清除缓存才能使一些新代码正常工作。

于 2013-09-13T07:59:54.263 回答