我从主 MVC 项目(我们称之为 Main)在一个单独的项目(我们称之为 Shared)中创建了一个布局视图,并使用 RazorGenerator 编译了该视图。当我在 Main 的任何 MVC 页面中使用布局时,它工作正常:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
但是,当我以这种方式使用 ActionFilter 设置布局时:
public class LayoutAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var viewResult = filterContext.Result as ViewResult;
viewResult.MasterName = "~/Views/Shared/_Layout.cshtml";
}
}
只需在 Main 的控制器中使用它,如下所示:
[Layout]
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
}
我收到此错误:
未找到视图“索引”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:~/Views/Home/Index.cshtml ~/Views/Shared/Index.cshtml ~/Views/Home/Index.aspx ~/Views/Home/Index.ascx ~/Views/Shared/Index。 aspx ~/Views/Shared/Index.ascx ~/Views/Shared/_Layout.cshtml
我真的很想使用 Shared 项目中内置的 ActionFilter,这样我就可以在 Main 项目(或任何其他项目)中的任何控制器中使用它。
任何想法为什么我会收到此错误?