使用jQuery异步传递Model到控制器方法,并异步返回错误信息

2020-12-13 03:33

阅读:449

标签:style   blog   class   code   java   c   

需要通过jquery传递到控制器方法的Model为:

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; } 
    }

 

使用下面这个类的Message属性装载成功或错误信息,并最终转换成json格式返回给视图: 

    public class PersonVm
    {
        public string Message { get; set; } 
    }

 

控制器通过遍历ModelState.Keys来显示错误信息。

      public ActionResult Demo()
        {
            return View();
        }
 
        [HttpPost]
        public ActionResult SavePerson(Person person)
        {
            if (ModelState.IsValid)
            {
                string message = string.Format("用户姓名:{0},年龄:{1}", person.Name, person.Age);
                return Json(new PersonVm() {Message = message});
            }
            else
            {
                string errorMessage = "
发生以下错误:
    ";
                foreach (var key in ModelState.Keys)
                {
                    var error = ModelState[key].Errors.FirstOrDefault();
                    if (error != null)
                    {
                        errorMessage += "
  • "
  • +error.ErrorMessage+"";
                        }
                    }
                    errorMessage += "";
                    return Json(new PersonVm() {Message = errorMessage});
                }
            }    
     

     

    视图使用 $.toJSON()方法,把Model转换成json格式传递给控制器方法。把对象转换成json格式的jQuery扩展,在这里。

    @model MvcApplication1.Models.Person
    @{
        ViewBag.Title = "Demo";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
     
    @Html.EditorForModel()
     
    "submit" value="保存" id="personCreate"/>
        "resultMessage">
    
    
     
    @section scripts
    {
        
        
            $(function() {
                $(‘#personCreate‘).click(function() {
                    var person = getPerson();
     
                    if (person == null) {
                        alert("用户名不能为空");
                        return;
                    }
     
                    var json = $.toJSON(person);
     
                    $.ajax({
                        url: ‘@Url.Action("SavePerson","Home")‘,
                        type: ‘POST‘,
                        dataType: ‘json‘,
                        data: json,
                        contentType: ‘application/json; charset=utf-8‘,
                        success: function(data) {
                            var message = data.Message;
                            $("#resultMessage").html(message);
                        }
                    });
                });
            });
     
            function getPerson() {
                var name = $(‘#Name‘).val();
                var age = $(‘#Age‘).val();
                return (name == "") ? null : { Name: name, Age: age };
            }
        
    }
     

    使用jQuery异步传递Model到控制器方法,并异步返回错误信息,搜素材,soscw.com

    使用jQuery异步传递Model到控制器方法,并异步返回错误信息

    标签:style   blog   class   code   java   c   

    原文地址:http://www.cnblogs.com/darrenji/p/3726731.html


    评论


    亲,登录后才可以留言!