【问题标题】:Asp.net MVC client validationAsp.net MVC 客户端验证
【发布时间】:2014-07-21 20:41:05
【问题描述】:

我正在构建 asp.net mvc5 应用程序,但没有足够的知识来解决它。我有一个需要验证的表单,然后使用 ajax 发布。我用Ajax.BeginForm()

@using (Ajax.BeginForm("ActionMethod", "Controller", new { id =
 "form"}, new AjaxOptions { HttpMethod = "POST", OnBegin =
 "FormValidation", OnSuccess = "WriteMessage" }))

在函数 FormValidation 内部,我有自己的验证代码,其中,除其他外,我进行了 ajax 调用以从数据库中获取数据。如果函数返回 false 则不提交表单,但如果返回 true 则提交表单。我成功地获取了 json 格式的数据。我获取的数据在 ajax 的成功回调中,不能在它之外使用,所以在成功回调中我有验证代码。但是当我在成功回调中的验证代码失败时,我希望不提交该表单,但该错误会显示给用户。如何停止提交表单,或者可能有另一种方法。

我的控制器操作:

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include="ID,Date,Name,Surname,Adress,ProjectName")] Data data)
        {
            if (ModelState.IsValid)
            {
                db.Data.Add(data);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(data);

        }

【问题讨论】:

  • 显示完整的表单和控制器操作
  • 如果您使用的是 Ajax 调用,那么您在与服务器通信时不会执行客户端验证。您应该做的是用一些属性装饰您的模型属性,以告诉文本框(或其他输入)有效范围等各个属性。然后,您还可以在将表单数据发送到服务器之前,对提交按钮上的 click 方法中的不同值执行其他次要业务逻辑。您为 Ajax 提供的方法只不过是 Save 方法。没有验证。
  • 是的,但是对于一些“复杂”的场景呢?我知道我可以创建自己的自定义注释,但我不知道我是否能够为我的场景做到这一点。

标签: jquery ajax asp.net-mvc-5 ajax.beginform


【解决方案1】:

为什么不使用数据注释??

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-6

试试这个,因为使用 Dataannotations 你可以处理客户端和服务器端的验证

所以请尝试....

【讨论】:

  • 是的,我知道数据注释,但我需要一些自定义注释来适应我的场景,而且我认为我不能这样做。例如,我有四个文本框,我有不同的选项如何根据数据库填充文本框(假设修改数据库中的某个对象),即用户输入第一个和第三个文本框,其他两个为空,所以我需要验证这是否好入口。这就是我试图用 ajax 调用做的事情..但显然我需要做其他事情......感谢您的反馈;)
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 2011-02-08
  • 1970-01-01
相关资源
最近更新 更多