如果声明没有在剃刀中返回值

时间:2013-06-26 20:23:43

标签: c# linq razor asp.net-webpages

我试图在razor中使用linq从数据库中返回一个数值。 当我尝试什么都没有被退回。这是我所做的一个例子。未打印的变量是“grad_year”

@{
    var trust = new trusteeEntities();
    var former = (from g in trust.Members
                where g.status == "Former"
                orderby g.lname ascending
                select g);
    var pos = 0;
    foreach (var f in former)
    {
        <div class="member">
            <h6>@f.fname @f.lname @if (f.grad_year != null) { @string.Format("'{0:00}", f.grad_year); }  @if (f.deceased == true){@Html.Raw("**")}</h6>
       </div>
    }                      
}

2 个答案:

答案 0 :(得分:0)

唯一合乎逻辑的结论是,您的former集合为空(Count == 0),因此您的枚举不会被执行。确定集合为空以进行验证的原因。

答案 1 :(得分:0)

它可能没有输出,因为它只是执行'string.Format(..)'作为声明。

你必须明确告诉Razor引擎输出它。

这可以通过在其周围放置<text></text>来完成,例如

@if (f.grad_year != null) { <text>@string.Format("'{0:00}", f.grad_year)</text> }

编辑:

您也可以使用conditional operator执行此操作,例如

@(f.grad_year != null ? @string.Format("'{0:00}", f.grad_year) : null)