0

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>

}

我敢肯定,每个人以前都见过这种事情一百万次。

有谁知道是否有任何方法可以根据 item.Author 隐藏或禁用 Actionlinks。

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

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

非常感谢。

4

2 回答 2

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)。

于 2011-04-22T22:03:08.423 回答
1

除了 Marek 的评论 - 请在他们发布/获取您的编辑页面时检查当前用户,以确保他们对此具有权限。我可以很容易地伪造一个链接来访问我应该可以访问的东西,甚至可以更改在编辑某些东西时你必须篡改模型的任何隐藏表单值。

于 2011-04-22T22:36:37.853 回答