如果条件如何忽略@RenderBody()

时间:2018-09-20 19:39:18

标签: c# asp.net-mvc razor

我有一个要验证条件的页面。如果条件为true,则显示其他页面,否则显示登录页面。

@if (sitemaintainmode == "false")
{
    <body>
   
        <div class="navbar navbar-default">
            <div class="container">
          
                    @Html.Partial("_LoginPartial")
               
            </div>
        </div>

        <div class="container body-content">
            @RenderBody()
        </div>
        @Html.Partial("_Footer")

      
        </script>
    </body>
}
else
{
   @RenderPage("~/Views/Account/Error.cshtml"); 
    
}

但这给我一个错误-

  

尚未为布局页面“〜/ Views / Shared / _Layout.cshtml”调用“ RenderBody”方法。

2 个答案:

答案 0 :(得分:1)

你不能忽略    RenderBody()在您的代码中,因为您可能会在cshtml页面中使用此Layout="~/Views/Shared/_Layout.cshtml"

创建单独的customeErrorPage(视图)并在Controller中处理您的条件并使用return RedirectToAction("Login Or Error") or use return View("Login or Errorpage")

希望这会对您有所帮助。

答案 1 :(得分:0)

您可以在控制器中处理操作结果,重定向到“帐户”控制器中的“错误”视图,或使用web.config中的customError。例如:

<customErrors mode="RemoteOnly" defaultRedirect="~/Home/Error_Generic/" >
  <error statusCode="500" redirect="~/Account/Error" />
</customErrors>