MVC Remote验证遇到的问题

最近在熟悉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的表面现象迷惑。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值