快速业务通道

ASP.NET MVC案例教程(基于ASP.NET MVC beta)—第五篇:MVC整合Ajax

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
goryService();
18      List<CategoryInfo> categories = cServ.GetAll();
19      ViewData["Categories"] = new SelectList(categories, "ID", "Name");
20       return View("Release");
21    }
22
23    public ActionResult DoRelease()
24     {
25      if (String.IsNullOrEmpty(Request.Form["Title"]) || String.IsNullOrEmpty(Request.Form ["Content"]))
26      {
27        if (String.IsNullOrEmpty(Request.Form ["Title"]))
28        {
29          ViewData.ModelState.AddModelError ("TitleValidator","公告标题不能为空!");
30        }
31        if (String.IsNullOrEmpty(Request.Form["Content"]))
32        {
33           ViewData.ModelState.AddModelError("ContentValidator", "公告内容不能为空!");
34        }
35
36        return Release();
37      }
38
39      AnnounceInfo announce = new AnnounceInfo()
40      {
41        ID = 1,
42        Title = Request.Form ["Title"],
43        Category = Int32.Parse(Request.Form["Category"]),
44         Content = Request.Form["Content"],
45      };
46
47      IAnnounceService aServ = ServiceBuilder.BuildAnnounceService();
48      aServ.Release(announce);
49
50      ViewData ["Announce"] = announce;
51      return View("ReleaseSucceed");
52    }
53  }
54}

可以看到,我们的DoRelease这个Action方法多了不少东西。我们看多了什么:当从表单传递过来的标题或内容为空 时,我们做了一定处理。注意,这个ViewData.ModelState.AddModelError方法,它就是往我们刚才说的由Html.ValidationMessage生成的span 里加入错误信息的方法,它可以有两个参数,第一个指明哪个span,这个参数Html.ValidationMessage中的参数是对应的。第二个参数就是要 显示的信息。

相信结合视图和控制器,已经很好理解了。最后,如果标题或内容有空值的话,我们不再调用业务逻辑组件处理了,而是 调用了Release这个Action。为什么我们不用Redirect呢?因为我们要保持ViewData中的数据,刚才我们的错误信息可都放在里面的,而使用了 Redirect,ViewData的信息就传不过去了。

现在,我们再来发布公告。我们故意什么都不填,提交,看结果:

ASP.NET MVC案例教程(基于ASP.NET MVC beta)—第五篇:MVC整合Ajax

没有问题,我们的程序成功对标题和内容进行了完整性检测 (这里就是均不能为空),在验证不通过时,返回了发布公告视图并正确显示了错误提示信息。

也许你有一个疑问,为什么第一次请求 Release视图时没有显示任何错误信息呢?因为那时ViewData中的ModelError是空的。而Html.ValidationMessage生成的标签会自动寻找 ModelError中同名的错误信息,找不到,当然是空的了。而在提交空信息时,DoRelease这个Action为ViewData的ModelError添加了内容,于是 当再次返回Release视图时,相应信息就显示在我们指定的位置了。

使用ASP.NET AJAX实现客户端数据验证

上面的代码运行起来 没问题,也达到了我们的要求。但是验证标题内容是否为空这种行为在客户端应该就可以完成。当然,为了放置恶意攻击或浏览器将 JavaScript屏蔽的情况,我们应该在后台进行验证,但是我们不能每次都将这种请求发到

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号