我有一个 ASP.NET MVC web 应用程序,其中的所有页面都使用一个主 Layout.cshtml
页面。虽然我通常想要 RenderBody()
,但我有一个可以在我的数据库中启用的站点关闭机制,所以我基本上想要一个看起来像这样的布局页面:
@if(DbHelper.SiteIsShutDown) {
<h1>Site is shut down temporarily</h1>
}
else {
<h1>Welcome to the site</h1>
@RenderBody()
}
问题在于,如果 SiteIsShutDown
为真,则 RenderBody()
不会被调用,我得到异常:
The "RenderBody" method has not been called for layout page...
那么有什么办法可以解决这个问题吗?我只是想从我的布局页面呈现一些输出,而没有从我的 View 页面呈现。
最佳答案
您可能应该将主布局留给渲染 View ,而不是在站点关闭时使您的 View 短路。
最好的办法是检查这个并在 Global.asax 中处理它,即在 BeginRequest
中:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if(DbHelper.SiteIsShutDown)
{
HttpContext.Current.Response.Redirect("SiteDown");
}
}
关于c# - 有什么办法可以绕过 RenderBody() 要求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13383293/