首页 > 解决方案 > Asp.Net View Rendering 意外输出

问题描述

为什么这段代码可以完美运行,按预期输出 HTML 并且...

<div class="page home-page custom-container d-flex flex-column">
    @await Component.InvokeAsync("PersonalizedProducts")
    @await Component.InvokeAsync("RecommendedProducts")
    @await Component.InvokeAsync("SuggestedProducts")
    @await Component.InvokeAsync("HomePageProducts")
    @await Component.InvokeAsync("HomePageNewProducts")
    @await Component.InvokeAsync("CategoryFeaturedProducts")
</div>

...这个不起作用:

<div class="page home-page custom-container d-flex flex-column">
@{
    var tasks = new List<Task>();

    tasks.Add(Component.InvokeAsync("PersonalizedProducts"));
    tasks.Add(Component.InvokeAsync("RecommendedProducts"));
    tasks.Add(Component.InvokeAsync("SuggestedProducts"));
    tasks.Add(Component.InvokeAsync("HomePageProducts"));
    tasks.Add(Component.InvokeAsync("HomePageNewProducts"));
    tasks.Add(Component.InvokeAsync("CategoryFeaturedProducts"));

    await Task.WhenAll(tasks);
}
</div>

上面提到的组件之间是 100% 独立的,除了数据库之外不共享任何东西,它们不会改变数据库,因为这些是仅获取组件......

标签: c#asp.netasp.net-mvcasp.net-core

解决方案


如果您期望 html 输出,那么您将需要添加更多代码来输出 html:

<div class="page home-page custom-container d-flex flex-column">
@{
    var tasks = new List<Task>();

    tasks.Add(Component.InvokeAsync("PersonalizedProducts"));
    tasks.Add(Component.InvokeAsync("RecommendedProducts"));
    tasks.Add(Component.InvokeAsync("SuggestedProducts"));
    tasks.Add(Component.InvokeAsync("HomePageProducts"));
    tasks.Add(Component.InvokeAsync("HomePageNewProducts"));
    tasks.Add(Component.InvokeAsync("CategoryFeaturedProducts"));

    await Task.WhenAll(tasks);

    foreach( var t in tasks)
    {
        var var1 = await t;
        @var1;
    }
}
</div> 

推荐阅读