直接上代码,就是验证不触发点submit以后,直接就到提交的方法了。
找了好多办法,惆怅希望帮忙。
前台:
@model Expert.Models.Search_Expert@{
    ViewBag.Title = "专家抽取";
}
<script type="text/javascript" language="javascript">
</script>
<h2>Index</h2>
<table border="1">
    <tr>
        <td colspan="9">
        @using (Html.BeginForm())
        {
            <fieldset>
            抽取人数
            @Html.EditorFor(model => model.Top)
            @Html.ValidationMessageFor(model => model.Top)
            ,专业
            @Html.DropDownListFor(model => model.Major, ViewData["listMajor"] as SelectList)
            ,回避单位
            @Html.EditorFor(model => model.Company)
            @Html.ValidationMessageFor(model => model.Company)
            ,抽取范围
            @Html.DropDownListFor(model => model.Lv, ViewData["listLv"] as SelectList)
            <input id="Submit1" type="submit" value="submit" />
            </fieldset>
        }</td>
    </tr>model:
 public class Search_Expert
    {//抽取人数<input id="txtTop" type="text" />,专业<select id="ddlMajor"></select>,回避单位<input id="txtCompany" type="text" />,抽取范围<select id="ddlLv"></select>
        [DisplayName("抽取专家")]
        [Required(ErrorMessage = "抽取专家人数不能为空")]
        [Range(1, int.MaxValue, ErrorMessage = "专家人数必须大于等于1")]    
        public int Top { get; set; }
        public string Major { get; set; }        [DisplayName("公司名称")]
        [RegularExpression(@"/[0-9a-zA-Z\xa0-\xff]{1,32}/", ErrorMessage = "的格式不正确")]
        [DataType(DataType.Text)]
        public string Company { get; set; }
        public string Lv { get; set; }
    }Controller:
public ActionResult Index()
        {。中间代码略return View();}[HttpPost]
        public ActionResult Index(Search_Expert search_Expert)
        {
            if (ModelState.IsValid)
            {
            }
            TempData["search_Expert"] = search_Expert;
            return RedirectToAction("Index");
        }

解决方案 »

  1.   

    你的Controller中要返回错误提示
    ModelState.AddModelError(xxxxx)
      

  2.   


    那我model层写的   [DisplayName("抽取专家")]不就没用了么
      

  3.   


    而且我只能在HttpPost中用ModelState.AddModelError,那提交到index的时候就没了
      

  4.   

    如果下面这两个文件都是vs自动产生的,就是建项目的时候带出来的,
    jquery.validate.min.js
    jquery.validate.unobtrusive.min.js则把jquery换成自动生成的
    jquery-1.5.1.min.js试试的
      

  5.   


           [HttpPost]
            public ActionResult Index(Search_Expert search_Expert)
            {
                if (ModelState.IsValid)
                {
                }
                TempData["search_Expert"] = search_Expert;
                return RedirectToAction("Index");  //换成return  View(); ?
            }
      

  6.   

    果然是jquery的问题。。另外提醒大家config也需要设置
      

  7.   

    @Html.ValidationMessageFor(model => model.Top) 
    这种强类型的写法,找错误信息的时候应该是在下面这里找的。。
            [DisplayName("公司名称")]
            [RegularExpression(@"/[0-9a-zA-Z\xa0-\xff]{1,32}/", ErrorMessage = "的格式不正确")]
            [DataType(DataType.Text)]
            public string Company { get; set; }
            public string Lv { get; set; }至于ModelState.AddModelError()  提示错误的信息貌似不是这种写法。
    LZ试一下  我只是猜测..
      

  8.   

    标记下,之前做过,不记得了。我们现在采取的是jquery进行客户端验证。
      

  9.   

    去下载一下最新的jquery.validate应该就可以解决的,貌似最新的1.10