@if的最佳语法,带有多个OR,如果是内部的

时间:2018-05-22 19:25:10

标签: c# asp.net-mvc razor syntax

我需要你对C#语法的帮助:

这是我的实际代码:

<div class="class">
    <h5>MySuperTitle</h5>
    <ul>
        @if (Ms.Cs.value1 != null)
        {
            <li> My Li1 <span>@Ms.Cs.value1</span> </li>
        }
        @if (Ms.Cs.value2 != 0)
        {
            <li> My Li2 <span>@Ms.Cs.value2</span> </li>
        }
        @if (true)
        {
            <li> My Li3 <span>--</span></li>
        }
        @if (Ms.Cs.value4 != 0)
        {
            <li> My Li4 <span>@Ms.Cs.value4</span></li>
        }
        @if (Ms.Cs.value5 != null)
        {
            <li> My Li5 <span>@Ms.Cs.value5</span></li>
        }
    </ul>
</div>

我想要的是在&#34; MySuperTitle&#34;上添加@if条件。如果没有&#34; sub&#34;也可以隐藏它。值。

我是否要添加@if (Ms.Cs.value1 != null) || (Ms.Cs.value2 != 0) || (Ms.Cs.value4 != 0) .....

还是有更好的语法? 非常感谢

2 个答案:

答案 0 :(得分:2)

您可以在渲染功能代码块中单独确定。

请注意,您可以使用相同的开口括号使您的Razor代码更简洁:

<div class="class">
@{
    Boolean hasAnyData = Ms.Cs.value1 != null || Ms.Cs.value2 != 0 || Ms.Cs.value4 != 0 || Ms.Cs.value5 != null;
}
    @if( hasAnyData ) {
    <h5>MySuperTitle</h5>
    <ul>
        @if (Ms.Cs.value1 != null) {
            <li> My Li1 <span>@Ms.Cs.value1</span> </li>
        }
        @if (Ms.Cs.value2 != 0) {
            <li> My Li2 <span>@Ms.Cs.value2</span> </li>
        }
        @if (true) {
            <li> My Li3 <span>--</span></li>
        }
        @if (Ms.Cs.value4 != 0) {
            <li> My Li4 <span>@Ms.Cs.value4</span></li>
        }
        @if (Ms.Cs.value5 != null) {
            <li> My Li5 <span>@Ms.Cs.value5</span></li>
        }
    </ul>
    }
</div>

答案 1 :(得分:0)

我假设您正在使用ViewModel。如果是这样,在ViewModel中,您可能希望这样做:

public bool Value1Exists
{
    get
    {
        return Value1 != null
    }
}
...
public bool HasItems
{
    get
    {
        if (Value1Exists || Value2Exists || ...)
             return true;
        else
            return false;
    }
}

然后在你的剃须刀视图中:

@if(Ms.HasItems) {
    <h5>MySuperTitle</h5>
    <ul>
        @if (Ms.Value1Exists) {
            ...
        }
        ...
    </ul>
}