none
mvc3 中 ajax 提交表单,如何显示自定义错误? RRS feed

  • 问题

  • 如题:框架:mvc3,JQ表单验证。

    这个表单是ajax提交,所有attribute定义的验证都能正常运行,实例中需要判断提交的选项是否在数据库中存在,如果存在则不能提交。

    在 controller 中对 该项进行验证

    ModelState.AddModelError("CategoryName", m.CategoryName & " 已经被占用,请更换其他后重试")

    如果是httppost请求的话,通过return view 可以显示这个错误信息,但ajax请求时,怎么让这个错误信息像客户端验证一样把错误显示在页面上呢?


    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/

    2012年7月19日 18:31

答案

  • 我大概明白你的意思..是不是像我下面写的那样
          <td width="50">
                                    @Html.LabelFor(m => m.Name)
                                </td>
                                <td>
                                    @Html.TextBoxFor(m => m.Name, new { @class = "input" })
                                </td>
                                <td>
                                    @Html.ValidationMessageFor(Model, m => m.Name, "请输入用户名", new { style = "width:170px;" })
                                </td>

    2012年7月22日 7:43
    版主

全部回复

  • 或者说,如何自定义JavaScript在ValidationSummary处显示错误信息呢?

    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/

    2012年7月20日 0:57
  •         function OnSuccess(data, status, xhr) {
                var result = data.Result;
                var msg=data.Msg;
                switch (result) {
                    case 1:
                        window.location = "@Url.RouteUrl(new { controller = "admin", action = "index" }) ";
                        break;
                    default:
                       refreshValCode();
                       ShowAlert("登录失败", msg);
                       break;
                }
    
            }
    可以按我这么写 如果是ajax请求就返回json,如果result是1的话就是登陆成功 否则登陆失败!  登陆失败 的时候 你就在某个位置弹出消息 或者 是直接改变某个地方的值!
    2012年7月21日 7:29
    版主
  • 你好,我也这样写了。但是觉得不完美,毕竟系统自动生成的验证程序已经写好了,有没有一个接口,可以直接调用来显示验证信息呢?

    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/

    2012年7月21日 17:18
  • 我大概明白你的意思..是不是像我下面写的那样
          <td width="50">
                                    @Html.LabelFor(m => m.Name)
                                </td>
                                <td>
                                    @Html.TextBoxFor(m => m.Name, new { @class = "input" })
                                </td>
                                <td>
                                    @Html.ValidationMessageFor(Model, m => m.Name, "请输入用户名", new { style = "width:170px;" })
                                </td>

    2012年7月22日 7:43
    版主
  • ValidationMessageFor 这个函数是我自己定义的..如果你想要的是这种效果的话 你也可以自己写!
    2012年7月22日 7:44
    版主
  • 差不多就是这个意思,但能不能不自定义 ValidationMessageFor 这个函数,然后ajax提交后,根据服务端的验证情况(即json返回的数据情况)来显示系统中使用 @Html.ValidationMessageFor(Model, m => m.Name) 显示的错误呢。

    我开始想是不是要用Modelstate.adderro... 来做,可实现不了,后来就用了自定义的js函数来完成的。但总觉得不完美。


    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/

    2012年7月25日 2:39
  • 你可以尝试用

    ValidationExtensions.ValidationMessageFor

    具体参考 http://msdn.microsoft.com/zh-tw/library/system.web.mvc.html.validationextensions.validationmessagefor.aspx

    我是自己扩展的!

    2012年7月25日 6:15
    版主