【问题标题】:Remote Validation in MVC3MVC3 中的远程验证
【发布时间】:2013-06-03 19:17:20
【问题描述】:

我在 ASP.NET MVC3 中执行远程验证,但它不起作用意味着它没有调用我在 Chrome java 脚本控制台中看到的操作。这是我的代码: 型号:

public class Genre
    {
        public int GenreId { get; set; }
        [Remote("GenreNameExist","Genre",ErrorMessage="Genre name already Exists!!!")]
        public string Name { get; set; }
        public String Description { get; set; }
        public List<Album> Albums { get; set; }
    }

控制器:

public ActionResult GenreNameExist(Genre genre) 
        {
             var gen = db.Genres.Where(x=>x.Name==genre.Name).FirstOrDefault();
            if (gen == null)
            {
                return Json(true, JsonRequestBehavior.AllowGet);
            }
            else {

                return Json(string.Format("{0} is not available.", Name), JsonRequestBehavior.AllowGet);
            }
        }

和视图:

@Html.ValidationSummary(true);
    <div class="editor-label">
        @Html.LabelFor(x => x.Name)
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(x => x.Name)
        @Html.ValidationMessageFor(x=>x.Name)
    </div>

提前致谢!!!

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    你需要添加:

    var gen = db.Genres.Where(x=>x.Name==Name).FirstOrDefault();
    

    所以它会执行。

    在控制器中传递Genre 类,使其映射到该类,然后添加if(ModelState.IsValid),以便针对该类执行验证。或者添加一个 ViewModel 类。

    更新:

    你的脚本顺序正确吗?

    <script src="/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
    <script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
    <script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
    

    【讨论】:

    • 控制器如何显示页面+回发?他们是否在页面上的文本框和标签中呈现数据属性?
    • 保存/创建方法的操作看起来如何?
    • 您是否在 webconfig 中启用了客户端验证?
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多