Скрыть или отключить MVC3 ActionLinks в зависимости от значения ячейки

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, но я буду очень доволен любым решением.

Большое спасибо.


person Pete Davies    schedule 22.04.2011    source источник


Ответы (2)


Что-то вроде этого

@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-адреса).

person Marek Karbarz    schedule 22.04.2011
comment
Спасибо Марек. Ваше решение работает отлично. Я думал, что это будет намного сложнее. Вы сэкономили мне много времени. Спасибо также за ваше предложение проверить сторону контроллера, я бы сам об этом не подумал. - person Pete Davies; 23.04.2011

В дополнение к комментариям Марека - пожалуйста, проверьте текущего пользователя, когда он публикует/получает вашу страницу редактирования, чтобы убедиться, что у него есть разрешения на это. Я мог бы легко подделать ссылку, чтобы получить доступ к чему-то, к чему у меня должен быть доступ, или даже изменить любые скрытые значения формы, которые вам нужно вмешиваться в модель при редактировании чего-либо.

person Adam Tuliper - MSFT    schedule 22.04.2011