今天为大伙介绍:ASP.NET MVC3 RemoteAttribute远程属性验证的相关内容。
对于:MVC3 RemoteAttribute,是项新内容,话称为:MVC Model远程验证。
下面看下相关介绍:
class="c# color1" style="background-image: none !important; position: static !important; text-align: left !important; overflow-x: visible !important; overflow-y: visible !important; margin: 0px; outline-width: 0px !important; width: auto !important; bottom: auto !important; font: 1em/1.1em monospace; float: none !important; height: auto !important; color: gray !important; vertical-align: baseline !important; top: auto !important; right: auto !important; left: auto !important; background-origin: initial; background-clip: initial; border-top-left-radius: 0px 0px; border-top-right-radius: 0px 0px; border-bottom-right-radius: 0px 0px; border-bottom-left-radius: 0px 0px; border: 0px; padding: 0px !important;">/// <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的。
[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值)。
@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中新加的东西。