【问题标题】:Hide or Disable MVC3 ActionLinks depending on cell value根据单元格值隐藏或禁用 MVC3 ActionLinks
【发布时间】:2023-04-06 19:28:01
【问题描述】:

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。

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

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

非常感谢。

【问题讨论】:

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


    【解决方案1】:

    类似的东西

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

    【讨论】:

    • 谢谢马雷克。您的解决方案完美运行。我以为会难很多。你为我节省了很多时间。也感谢您建议检查控制器端,我自己不会想到这一点。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2023-04-03
      • 2016-01-11
      相关资源
      最近更新 更多