ASP.NET MVC3 C# - foreach

5

我不太清楚如何在当前的foreach循环中实现以下操作:

@foreach
(var post in Model."table".Where(w => w.Private_ID == 1).OrderBy(o => o.Date))
{
  <div class ="post">
    <fieldset>
      <p class="post_details">At @post.Post_Date By @post.Username</p>
      @post.Post_Desc
    </fieldset>
  </div>
}

如果@post.anonTRUE,那么 post.Username 不会显示(并且它将显示为“匿名”)

提前感谢你的任何建议/帮助/建议。


2
它有一个愚蠢的名字,我不想让自己难堪 :) - Amy
2个回答

8
你应该能够做一些类似于以下的事情:
@(post.anon ? "Anonymous" : post.Username)

虽然我认为大部分逻辑应该在C#中完成,而不是留给视图(因此,创建一个具有所有逻辑的特定视图模型已经完成。这意味着您可以只需循环即可,无需进行任何额外的思考:

@foreach(var post in Model.Posts)
{
   <div class ="post">
      <fieldset>
         <p class="post_details">At @post.Post_Date By @post.Poster</p>
         @post.Post_Desc
      </fieldset>
   </div>
}

在上面的例子中,如果需要,@post.Poster已经预设为匿名。

我不太喜欢把逻辑放在视图中,所以我会采纳你的建议,非常感谢! - Amy

0

试试这个:

@foreach(var post in Model."table".Where(w => w.Private_ID == 1).OrderBy(o => o.Date))
{
    <div class ="post">
        <fieldset>
            <p class="post_details">At @post.Post_Date By (@post.Anon == true ? "Anonymous" : @post.Username)</p> 
            @post.Post_Desc
        </fieldset>
    </div>
}

编辑:抱歉,这行应该是:@(post.Anon == true ? "匿名" : post.Post_Desc)


它现在不起作用,但我明白它想要做什么。非常感谢! - Amy
为什么要写 post.Anon == true?可以简写成 post.Anon 吗? - lahsrah
可以的。只需发布即可。匿名就够了。这是个人选择。我喜欢明确地写出“== true”以提高可读性。 - Huske

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接