Я читал о примере на веб-сайте Microsoft о том, как показать или скрыть ссылку «Зарегистрировать» для объекта, зависит от того, зарегистрирован текущий пользователь или нет.
Они добавляют следующий код в представление для отображения ссылки «Регистрация», только если текущий пользователь еще не зарегистрирован: -
<div id=”rsvpmsg”>
<% if (Request.IsAuthenticated) { %>
<% if (Model.IsUserRegistered(Context.User.Identity.Name)) { %>
<p>You are registered for this event!</p>
<% } else { %>
<%: Ajax.ActionLink( “RSVP for this event”,
“Register”, “RSVP”,
new { id=Model.DinnerID },
new AjaxOptions { UpdateTargetId=”rsvpmsg” }) %>
затем в методе действия регистрации они также выполняют ту же проверку, чтобы проверить, зарегистрирован ли пользователь или нет, как указано ниже: -
[Authorize, HttpPost]
public ActionResult Register(int id) {
Dinner dinner = dinnerRepository.GetDinner(id);
if (!dinner.IsUserRegistered(User.Identity.Name)) {
RSVP rsvp = new
RSVP();
// .....
Поэтому мой вопрос заключается в том, почему они снова выполняют ту же проверку метода Post action ,,, есть ли у пользователя возможность вызвать метод действия POST register, кроме нажатия на ссылку Register, которая не будет отображается, если пользователь уже зарегистрирован? ... так почему бы не рассмотреть
if (!dinner.IsUserRegistered(User.Identity.Name))
проверить метод действия как ненужный?
BR