【问题标题】:Blazor Razor return statement in HTMLHTML 中的 Blazor Razor 返回语句
【发布时间】:2021-05-17 18:28:33
【问题描述】:

我最近继承了一个 Blazor 项目,遇到了许多 .razor 文件,例如:

<h1>Some header text></h1>
@if(someCondition) {
<div> lots of html and what not here taking up many lines</div>
} else {
<div> more html taking up many lines</div>
}

我想知道的是,是否有一种语法可以让我通过在我的“if”条件中添加一个 return 语句来消除隐藏在杂草中的“else”语句。含义:

<h1>Some header text></h1>
@if(someCondition) {
<div> lots of html and what not here taking up many lines</div>
return //JUST BAIL HERE INSTEAD OF HAVING TO START AN ELSE BLOCK LIKE I DO ELSEWHERE IN LIFE
}

<div> more html taking up many lines</div>

【问题讨论】:

标签: razor blazor


【解决方案1】:

是的。您可以使用return; 这样结束RenderFragment 没有其他内容被绘制。

blazor repl

【讨论】:

    【解决方案2】:

    是的,你可以,就像 Brian's answer shows,但是 Razor 鼓励将你的标记分解成可以更容易组合的组件。在这种情况下,我会考虑将您的 &lt;div&gt;&lt;/div&gt; 元素分解为它们自己的组件,从而使生成的 Razor 更简单:

    <h1>Some header text></h1>
    @if(someCondition)
    {
        <component1 />
    }
    else
    {
        <component2 />
    }
    

    编辑添加:

    想象一下,为什么在某些页面中没有呈现一些巨大的标记块,而没有围绕它的条件。才发现组件中间有一些意想不到的return 语句。如果是我,我想我的反应不会很好。

    【讨论】:

    • 不,你可以。正如布赖恩所说,你完全可以使用returnRenderFragments 只是代表。
    • 原来如此!每天学些新东西。不过,我认为我不会那样写我的 Razor 视图,并且仍然会将它们组件化。但现在我有一些新的东西需要留意。
    • @EricKing 完全同意类似于意大利面条代码。
    • 或者对静态内容使用MarkupString
    猜你喜欢
    • 2022-11-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    相关资源
    最近更新 更多