首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >asp.net mvc 3- ajax表单提交和验证

asp.net mvc 3- ajax表单提交和验证
EN

Stack Overflow用户
提问于 2011-03-04 22:43:34
回答 2查看 25.3K关注 0票数 21

如果这已经被问到了,我很抱歉,但是我已经找了一段时间了,但我发现的都是相当老的帖子(mvc1,mvc2)。我有一个表单,我想通过Ajax提交。

看起来可以工作,但不包括服务器端验证。

1)我不确定是使用AjaxHelper.BeginForm还是使用原始的jquery调用($.ajax)?这里推荐的方法是什么?

2)如何处理客户端和服务器端的验证?我希望mvc框架提供一个内置的机制来处理这个问题?有一些验证,我只做服务器端。在这里使用ValidationSummary仍然有效吗?

我使用的是asp.net mvc3 3/剃须刀,使用的是不引人入胜的javascript验证。

谢谢!

编辑:(应博比B的要求).是在提出问题几个月后添加的,因为用户想知道如何使用AjaxHelper

这是我使用的javascript代码:

代码语言:javascript
运行
复制
<script type="text/javascript">

function ajaxValidate() {
  return $('form').validate().form();
}

function getGbPostSuccess(ajaxContext){
  // .... it is not necessary to do anything here.
}
function showFaliure(ajaxContext){
   // handle failure
}

HTML片段:

代码语言:javascript
运行
复制
@using (Ajax.BeginForm("Index", "Home", new AjaxOptions
                        {
                            UpdateTargetId = "form1",
                            InsertionMode = InsertionMode.Replace,
                            OnBegin = "ajaxValidate",
                            OnSuccess = "getGbPostSuccess",
                            OnFailure = "showFaliure"
                        }))
{
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-04 23:58:26

为此,我已经使用malsup的jQuery表单插件一段时间了。老实说,我对AjaxHelper并不熟悉,但看起来它可以满足您的需要。就客户端和服务器端验证而言,只要使用模型绑定和System.DataAnnotations命名空间中的属性,所有这些都应该自动完成。

代码语言:javascript
运行
复制
public class MyModel
{
    [Required(ErrorMessage = "Please enter your name")]
    public String Name { get; set; }

    [Required(ErrorMessage = "Please enter your email")]
    public String Email { get; set; }

    [Required(ErrorMessage = "Please enter a rating")]
    [Range(1, 5, ErrorMessage = "The rating must be between 1 and 5")]
    public Int32 Rating { get; set; }
}

[HttpPost]
public ActionResult Index(MyModel myModel)
{
   if(ModelState.IsValid)
   {
       // good to go, put it in the DB or whatever you need to do
   }
   else 
   {
       return View(model); // return the user back to the page, ModelState errors can be viewed using Html.ValidationSummary() or individual Html.ValidationMessageFor() calls
   }
}

如果您正在进行您自己的自定义服务器端验证,您可以通过创建一个实现ValidationAttribute的属性来创建您自己的自定义验证属性,或者通过调用ModelState.Errors.Add()添加验证错误(或者其他一些东西,我没有现成的引用)。

对于客户端,MVC将根据模型上的DataAnnotations属性为您生成客户端验证。

票数 8
EN

Stack Overflow用户

发布于 2011-03-04 23:11:50

MVC.NET 3已经打开了这个盒子。只需确保在ClientValidationEnabled中启用了web.config。检查

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5200098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档