在.Net Core中。如何在不产生错误的情况下渲染局部

时间:2018-09-19 02:57:06

标签: .net-core

我有以下_Layout.cshtml:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>My Title</title>
</head>
<body>
<div class="container body-content">
  @await Html.PartialAsync("~/Views/" + Model.Theme + "/_Header.cshtml")

  @RenderBody()

  @await Html.PartialAsync("~/Views/" + Model.Theme + "/_Footer.cshtml")
</div>
</body>
</html>

取决于“ Model.Theme”的值,我想渲染该部分(如果存在)。但是,如果它不存在,那么我就不希望该部分渲染。

如果Partial不存在,如何防止“ InvalidOperationException”?

请注意,我要测试部分内容,而不是Model.Theme。主题将始终存在,但并非所有部分都可用。

1 个答案:

答案 0 :(得分:1)

还原为默认值

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>My Title</title>
</head>
<body>
<div class="container body-content">
   @if (System.IO.File.Exists(@"Views/" + Model.Name + "/_Header.cshtml"))
   {
      @await Html.PartialAsync("~/Views/" + Model.Name + "/_Header.cshtml")
   }

  @RenderBody()

   @if (System.IO.File.Exists(@"Views/" + Model.Name + "/_Footer.cshtml"))
   {
      @await Html.PartialAsync("~/Views/" + Model.Name + "/_Footer.cshtml")
   }
</div>
</body>
</html>