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,但我对任何解决方案都非常满意。
非常感谢。
答案 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的评论之外 - 请在发布/获取编辑页面时检查当前用户,以确保他们拥有此权限。我可以轻松地创建一个链接来访问我应该访问的内容,甚至可以更改任何隐藏的表单值,在编辑内容时必须篡改模型。