我有一个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为true,那么RenderBody()不会被调用,而我会得到异常:



所以有办法解决这个问题吗?我只想从我的布局页面渲染一些输出,而从我的 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/

10-11 23:26