MVC表行仅对匹配的用户可见

时间:2011-09-04 21:09:18

标签: asp.net-mvc

我对MVC很新。我正在努力工作,如何根据登录的人在表格行中显示一些数据。即。如果登录的人与该行的检查器匹配,则显示一些内容。如果没有匹配显示一些不同的内容。

我想出了:

<td rowspan="2">
   <span>Checker:</span>
    @if(item.Checker.Username == HttpContext.Current.User.Identity.Name) {
       <div> Show content if logged in user matches row owner </div>
    }
    else {
       <div> Show different content when there isn't a match </div>
    }
</td>

我想知道这是否是正确的做法。我知道你希望尽可能多地保留逻辑,所以这可能不是最好的方法。

有人可以告诉我这是否可以达到这个目的?

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

实际上,更好的方法是在视图模型上添加一个布尔属性,以便您的视图如下所示:

@if (item.IsCurrentUserOwner) {
   <div> Show content if logged in user matches row owner </div>
}
else {
   <div> Show different content when there isn't a match </div>
}

现在,当控制器从域模型映射到视图模型时,它将根据当前登录的用户填充此属性。请记住,视图应该尽可能愚蠢,像这样的授权逻辑更适合控制器。

如果你不想打扰这个属性,你的方法也没关系。我只是给了我2美分的改进。