ASP.NET MVC3:为什么使用RemoteAttribute进行远程验证仅在客户端有效



我正在尝试使用新的RemoteAttribute实现远程验证,如MSDN文章《如何在ASP.NET MVC中实现远程验证》中所述。

客户端验证工作正常,但当我提交时,验证不再工作,数据存储在数据库中。。。

我也必须实现服务器端验证,或者我没有做所有必要的事情来阻止提交?

远程验证就是这样设计的。它向控制器操作发送AJAX请求,以便执行一些验证,如果这些验证失败,则阻止提交。

您认为表单提交后应该执行相同的验证是正确的,因为用户可以禁用javascript,并且可以在不执行任何客户端验证的情况下提交。因此,例如,您可以将此验证逻辑外部化为一个单独的方法,您将从用于远程验证的控制器操作和表单提交后的POST操作中调用该方法。

以下是我代码的重要部分:

型号

[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);
        }
    }

查看

<div class="editor-field">
  @Html.EditorFor(model => model.TicketHD)
  @Html.ValidationMessageFor(model => model.TicketHD)
</div>

最新更新