MVC Remote验证遇到的问题

来源:互联网 发布:淘宝商家店铺状态异常 编辑:程序博客网 时间:2024/05/14 14:31
最近在熟悉MVC3.0。写了一个S_USER1类。
public partial class S_USER1    {        #region Primitive Properties            public virtual decimal USER_ID        {            get;            set;        }            public virtual Nullable<decimal> ROLE_ID        {            get;            set;        }                public virtual decimal ORG_ID        {            get;            set;        }                public virtual string ENABLE_FLAG        {            get;            set;        }        [Required]        [DisplayName("登录账号:")]        [StringLength(100)]        [Remote("CheckUserAccountExists", "UserMgr", ErrorMessage = "登录账号重复")]        public virtual string ACCOUNT        {            get;            set;        }}

验证代码如下:

[HttpGet]        public JsonResult CheckUserAccountExists(string userAccount)        {            bool exists = UserBll.CheckUserAccountExists(null, userAccount);            return Json(!exists, JsonRequestBehavior.AllowGet);        }
运行后发现,userAccount的值始终为null。页面端如下:

<div class="editor-label">            @Html.LabelFor(model => model.ACCOUNT)        </div>        <div class="editor-field">            @Html.EditorFor(model => model.ACCOUNT)            @Html.ValidationMessageFor(model => model.ACCOUNT)        </div>

百思不得其解。后更换变量名为account。

[HttpGet]        public JsonResult CheckUserAccountExists(string account)        {            bool exists = UserBll.CheckUserAccountExists(null, account);            return Json(!exists, JsonRequestBehavior.AllowGet);        }
参数正确取到了。写为大写的Account,发现也是可以取到值。

这个问题值得关注一下。留待后续研究。有知道原因的朋友也可以为我解惑。

接着又碰到了问题。ErrorMessage怎么不能正确显示呢?跟踪 return 的Json对象发现无异常,那只能是脚本有了问题。

查找了一些资料,发现我已经引用了

<script src="@Url.Content("~/Scripts/jquery-1.5.1.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>
改成
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")"  type="text/javascript"></script>
后页面验证信息可以显示正常。难道问题出在了1.5.1上面?进一步验证猜想,从网上下载了一个实例代码,用的就是1.5.1,在我的机器上跑也没有问题。

那就是剩下的两个js出了问题。找到新版本并替换原文件jquery.validate.min.js,jquery.validate.unobtrusive.min.js,一切OK了。

看来不能被jquery的表面现象迷惑。