MVC 验证的问题 应该不难

帅帅123321 2013-01-23 04:00:03
直接上代码,就是验证不触发。。。点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");
}
...全文
146 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujiazhi 2013-01-23
  • 打赏
  • 举报
回复
去下载一下最新的 jquery.validate 应该就可以解决的,貌似最新的1.10
Bule 2013-01-23
  • 打赏
  • 举报
回复
标记下,之前做过,不记得了。我们现在采取的是jquery进行客户端验证。
夜色镇歌 2013-01-23
  • 打赏
  • 举报
回复
@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试一下 我只是猜测..
帅帅123321 2013-01-23
  • 打赏
  • 举报
回复
果然是jquery的问题。。另外提醒大家。。。config也需要设置
夜色镇歌 2013-01-23
  • 打赏
  • 举报
回复

       [HttpPost]
        public ActionResult Index(Search_Expert search_Expert)
        {
            if (ModelState.IsValid)
            {
            }
            TempData["search_Expert"] = search_Expert;
            return RedirectToAction("Index");  //换成return  View(); ?
        }
zhujiazhi 2013-01-23
  • 打赏
  • 举报
回复
如果下面这两个文件都是vs自动产生的,就是建项目的时候带出来的, jquery.validate.min.js jquery.validate.unobtrusive.min.js 则把jquery换成自动生成的 jquery-1.5.1.min.js试试的
帅帅123321 2013-01-23
  • 打赏
  • 举报
回复
所有的都不行
zhujiazhi 2013-01-23
  • 打赏
  • 举报
回复
是ie不行,还是所有浏览器都不行的?
帅帅123321 2013-01-23
  • 打赏
  • 举报
回复
1.6版本。。。。
帅帅123321 2013-01-23
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你的Controller中要返回错误提示 ModelState.AddModelError(xxxxx)
而且我只能在HttpPost中用ModelState.AddModelError,那提交到index的时候就没了
zhujiazhi 2013-01-23
  • 打赏
  • 举报
回复
jquery是什么版本的?
帅帅123321 2013-01-23
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你的Controller中要返回错误提示 ModelState.AddModelError(xxxxx)
那我model层写的 [DisplayName("抽取专家")]不就没用了么
bdmh 2013-01-23
  • 打赏
  • 举报
回复
你的Controller中要返回错误提示 ModelState.AddModelError(xxxxx)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧