ASP.NET MVC3: почему удаленная проверка с RemoteAttribute работает только на стороне клиента? - PullRequest
1 голос
/ 12 января 2012

Я пытаюсь реализовать удаленную проверку с помощью нового RemoteAttribute, как описано в следующей статье MSDN Как выполнить удаленную проверку в ASP.NET MVC .

Работает проверка на стороне клиентахорошо, но когда я отправляю, проверка больше не работает, и данные сохраняются в db ...

Я должен также выполнить проверку на стороне сервера, или я не делаю все необходимое, чтобы предотвратить отправку?

1 Ответ

2 голосов
/ 12 января 2012

Так устроена удаленная проверка. Он отправляет AJAX-запрос к действию контроллера, чтобы выполнить некоторые проверки, и, если эти проверки не пройдены, запретить отправку.

Вы правы, считая, что вы должны выполнить ту же проверку после отправки формы, поскольку пользователь может отключить JavaScript и иметь возможность отправки без проверки клиента. Так, например, вы можете перенести эту логику проверки в отдельный метод, который вы вызываете из действия контроллера, используемого для удаленной проверки, и из действия POST после отправки формы.

Вот важные части моего кода:

MODEL

[Remote("CheckEsistenzaTicket", "Validation")]
public string TicketHD { get; set; }

КОНТРОЛЛЕР ВАЛИДАЦИИ

[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
    public class ValidationController : Controller
    {
        private ITManagerRepository tmanagerRepository;

        public ValidationController()
        {
            this.tmanagerRepository = new TManagerRepository(new TManagerContext());
        }

        public JsonResult CheckEsistenzaTicket(string TicketHD)
        {
            if (!tmanagerRepository.chkTicketExists(TicketHD))
                return Json(true, JsonRequestBehavior.AllowGet);

            string esiste = String.Format(CultureInfo.InvariantCulture,
                "Il ticket {0} risulta già caricato!", TicketHD);

            return Json(esiste, JsonRequestBehavior.AllowGet);

        }
    }

VIEW

<div class="editor-field">
  @Html.EditorFor(model => model.TicketHD)
  @Html.ValidationMessageFor(model => model.TicketHD)
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...