根据单元格值隐藏或禁用MVC3 ActionLinks

时间:2011-04-22 21:05:18

标签: jquery asp.net-mvc asp.net-mvc-3 razor html.actionlink

MVC3为我创建了下表

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Author)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Comment)
    </td>
     <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.UserCommentID }) |
        @Html.ActionLink("Details", "Details", new { id=item.UserCommentID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.UserCommentID })
    </td>
</tr>

}

我相信每个人之前都已经看过这种事了。

有没有人知道是否有任何隐藏或禁用Actionlinks的方法,具体取决于item.Author。

(我只希望作者能够编辑或删除他自己的评论)

我认为答案可能在于jQuery,但我对任何解决方案都非常满意。

非常感谢。

2 个答案:

答案 0 :(得分:4)

像这样的东西

@if(item.Author == loggedInUserIdOrSomethingYouWantToCompareTo) {
    <text>
    @Html.ActionLink("Edit", "Edit", new { id=item.UserCommentID }) |
    @Html.ActionLink("Details", "Details", new { id=item.UserCommentID }) |
    @Html.ActionLink("Delete", "Delete", new { id=item.UserCommentID })
    </text>
}

显然你仍然应该在控制器端检查以确保用户具有权限(很容易“伪造”这些URL)。

答案 1 :(得分:1)

除了Marek的评论之外 - 请在发布/获取编辑页面时检查当前用户,以确保他们拥有此权限。我可以轻松地创建一个链接来访问我应该访问的内容,甚至可以更改任何隐藏的表单值,在编辑内容时必须篡改模型。