【问题标题】:Inline If in Razor ViewRazor 视图中的内联 If
【发布时间】:2012-09-05 16:34:18
【问题描述】:

在我的控制器中,我有内联 If 语句:

ViewBag.NameSortParam = If(String.IsNullOrEmpty(sortOrder), "Name desc", "")

在我看来,如果:

@Code
    If(True, true, true)
End code

它说,“If 必须以匹配的 End If 结尾。”如果在这里,为什么我不能使用内联?谢谢。

【问题讨论】:

  • 是的,这令人沮丧。很高兴你问这个问题!

标签: asp.net-mvc vb.net asp.net-mvc-3 razor


【解决方案1】:

如果在 vb.net 中,您可以像这样进行内联:

@(If(testExpression, TruePart, FalsePart))

【讨论】:

    【解决方案2】:

    你可以这样使用:

       @(true? "yes": "no") 
    

    【讨论】:

    • 我怀疑你可以在 VB.NET 中使用类似的东西。
    • 然后将其修复为 VB.net
    【解决方案3】:

    您可以使用IIf,您无需将代码与@Code 部分混淆:

    @IIf(String.IsNullOrEmpty(sortOrder), "Name desc", "")
    

    【讨论】:

    【解决方案4】:

    试试

    @Code
        @(If(True, true, true))
    End Code
    

    【讨论】:

    • 这看起来像是答案。我想知道为什么它需要括号?谢谢你。
    • 可能只是一个解决办法让它工作。或者使用IIf(true, "", "")
    • IIF 已过时,据我所知 stackoverflow.com/questions/28377/iif-vs-if
    • 另外,我相信 IIF 与 IF 的工作方式不同,因为它会执行真假语句,并且不会像正常情况下那样短路。
    • 对我来说 IF 和 IIF 的主要区别在于 IF 需要一个可为空的引用类型,而 IIF 只需要一个计算结果为布尔值的表达式。在处理布尔模型属性(不可为空)时很有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2011-05-26
    • 2013-12-24
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多