ASP.NET MVC 3 —— Model远程验证
昨天写了篇笔记,这两天用了一下MVC3.0,发现果然进步了不小啊!
原文链接:http://www.youguanbumen.net/Article.aspx?id=77
这两天找了些ASP.NET MVC3的资料小看了一下,主要看了一下MVC3.0的一些新特性已经Razor视图引擎的一些东西,发现3.0真的比之前的两个版本进步很多,在开发体验上有了大大的提高!这两天看的和尝试的东西应该是比较浅显一点的,大致的内容有如下几个方面:
- Model验证的新特性(主要是从RemoteAttribute特性和IClientValidatable这两个新东西进行了解和尝试使用)
- Razor视图引擎的使用(主要是和原来的aspx区别开来)
- 控制器中的新特性(早在MVC3.0的测试版本中就已经提到的“动态类型”,还有其他新特性)
- 对HtmlHelper对象的进一步扩展(Chart和GridView的整合)
很明显,上面提到的前三点其实就是所谓的M-V-C了- -!。 下面讲的是Model远程验证新特性的使用:
RemoteAttribute——远程验证特性,主要有三个方面要注意,还是M-V-C:
Model:RemoteAttribute的使用和其他验证特性(例如RequiredAttribute)相似,直接戴在Model属性的头上就OK鸟,考虑下面这个Model
RemoteAttribute——远程验证特性,主要有三个方面要注意,还是M-V-C:
Model:RemoteAttribute的使用和其他验证特性(例如RequiredAttribute)相似,直接戴在Model属性的头上就OK鸟,考虑下面这个Model
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/// <summary> /// 用户添加操作的模型 /// </summary> public class MyUser_AddModel { #region MyRegion /// <summary> /// 用户名 /// </summary> [DisplayName( "登录账号" )] [Required(ErrorMessage = "用户账号不能为空" )] [Remote( "CheckUserAccountExists" , "Test" , ErrorMessage = "用户账号已存在" )] // 远程验证(Ajax) public string UserAccount { get ; set ; } } |
从上面的代码可以看到UserAccount属性上面有一个Remote特性,这个就是用于远程验证用的了,三个参数,第一个是控制器名,第二个是Action名,最后那个是验证不通过的提示文本(查看RemoteAttribute的元数据代码可以发现其实还有一个重要的参数,最完全的构造函数如下:public RemoteAttribute(string action, string controller, string areaName); 可以看到还可以指示到某个Area的。
Control:根据上面的代码我们需要在名为”Test“的控制器中提供一个名个”CheckUserAccountExists“的Action方法,如下:
Control:根据上面的代码我们需要在名为”Test“的控制器中提供一个名个”CheckUserAccountExists“的Action方法,如下:
1
2
3
4
5
6
7
|
[HttpGet] // 只能用GET !!! public ActionResult CheckUserAccountExists( string UserAccount) { string [] existsUsers = { "youguanbumen" , "wodanwojun" }; bool exists = string .IsNullOrEmpty(existsUsers.FirstOrDefault(u => u.ToLower() == UserAccount.ToLower())) == false ; return Json(!exists, JsonRequestBehavior.AllowGet); } |
这里有亮点要注意,Action必须是Get提交(Post的话无效),返回的结果是JsonResult(不是直接返回bool值)。
View:视图使用了Razor引擎,代码如下:
View:视图使用了Razor引擎,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
@model MvcApplication.Models.MyUser_AddModel < script src = "@Url.Content(" ~/Scripts/jquery-1.4.4.min.js")" type = "text/javascript" ></ script > < script src = "@Url.Content(" ~/Scripts/jquery.validate.min.js")" type = "text/javascript" ></ script > < script src = "@Url.Content(" ~/Scripts/jquery.validate.unobtrusive.min.js")" type = "text/javascript" ></ script > < fieldset > < legend >添加用户</ legend > < div > @using(Html.BeginForm("DoAddUser","Test")){ < p > @Html.LabelFor(m=>m.UserAccount): @Html.TextBoxFor(m=>m.UserAccount) @Html.ValidationMessageFor(m=>m.UserAccount) </ p > < p > < input type = "submit" value = "提 交" /> </ p > } </ div > </ fieldset > |
这里注意的地方有,页面声明页面为强类型(就是上面定义的Model),引入三个必须的脚本(创建MVC3.0项目的时候自带的),使用了HtmlHelper的”*For“泛型方法。除了jquery.validate.unobtrusive.min.js这个脚本,其他的都是不是3.0中新加的东西。
测试结果:从下面的截图我们可以看到,远程验证的效果,注意左上角(页面没有刷新)。

测试结果:从下面的截图我们可以看到,远程验证的效果,注意左上角(页面没有刷新)。

分类:
C#.NET
标签:
ASP.NET MVC3.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)