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に応じてアクションリンクを非表示または無効にする方法があるかどうかは誰にもわかりません。

(著者が自分のコメントを編集または削除できるようにしたいだけです)

答えは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 に答える