奇怪的.NET核心部分视图加载问题使用构建字符串

2w2cym1i  于 2023-10-21  发布在  .NET
关注(0)|答案(2)|浏览(220)

一个有点背景是,我试图加载一个导航部分文件,每个子区域,我在。很简单我原本以为...
好吧,这样可以:

  1. @await Html.PartialAsync("~/Areas/Admin/SubAreas/General/Views/Shared/_Navigation.cshtml")

这是行不通的:

  1. @if (ViewContext.RouteData.Values.ContainsKey("subarea"))
  2. {
  3. // ViewContext.RouteData.Values["subarea"].ToString() comes out as "General"
  4. await Html.PartialAsync("~/Areas/Admin/SubAreas/" + ViewContext.RouteData.Values["subarea"].ToString() + "/Views/Shared/_Navigation.cshtml");
  5. }

我试着删除if语句,看看这是否与它有关,没有。我尝试了字符串格式,如:

  1. await Html.PartialAsync(string.Format("~/Areas/Admin/SubAreas/{0}/Views/Shared/_Navigation.cshtml", ViewContext.RouteData.Values["subarea"].ToString()));

仍然没有香蕉-字符串肯定是“~/Areas/Admin/SubAreas/General/Views/Shared/_Navigation.cshtml”,如果我尝试将其更改为无效路径,则会抛出错误,因此它肯定会找到View,但只是拒绝显示它。
我在网上找不到任何关于这个的东西,但可能是在寻找错误的东西。有什么想法吗?!

gojuced7

gojuced71#

尝试将@放回await部分之前。
上周我遇到了这样的问题,挠了一会儿头。
我认为如果没有@,视图内容将被保留在 * 代码端 *,而不会被编组回调用者视图。

l2osamch

l2osamch2#

劳埃德的回答是我需要的解决方案(谢谢!),但在我实施它的过程中,另一个特质向我展示了出来。在HTML中过于紧密地 Package 代码也会导致同样的问题。

  1. <div>@{@await PartialAsync("View");}</div>

无法呈现视图,但是我可以简单地将其分解为

  1. <div>
  2. @{@await PartialAsync("View");}
  3. </div>

我不知道为什么会发生这种情况,我还没有深入研究过这一部分,但我认为这值得在同一个主题中分享,因为这是同一个问题的不同示例,有不同的修复方法。

相关问题