日期:2014-05-20  浏览次数:20697 次

asp.net mvc中表单验证问题
开发环境:VS2008 mvc2

如何在服务器端验证数据?

数据已经能够插入到表中,什么都不输入 直接堤交过去,会插入一条空的记录

网下查了半天,也没有弄明白,自带的代码也没有搞清楚,请哪位帮忙,谢谢!

view 代码如下

C# code

<% using (Html.BeginForm())
         { %>       
     <%= Html.ValidationSummary(true, "必要的信息请输入")%>
    分类名称:<%=Html.TextBox("typename")%>&nbsp; <%= Html.ValidationMessage("typename")%><br />
    是否可见:<%=Html.CheckBox("isvisible")%><br />     
  <input type="submit"  value="tijiao" />   
    <%}%>



controller代码
C# code

 [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult typeadd(string typename, bool isvisible)
        {         

            Dal.typenews tn = new Dal.typenews();
            Model.typenews model = new Model.typenews();

            if (ModelState.IsValid)
            {  
                model.typename = Server.HtmlEncode(typename);
                model.isvisible = isvisible;

                if (tn.Add(model) > 0)
                {
                   //添加成功,跳转到列表页
                    Response.Redirect("typelist");
                }
            }
            return View(model);
        }



------解决方案--------------------
将断点插入到函数开始处,typeadd(string typename, bool isvisible)
查看typename的值是多少?(有木有值呢?)
------解决方案--------------------
我想这个页面内的方法可以帮你解决问题。我刚才看了下,主要两种方法,第一个,自己在typeadd函数中判断是否为空校验,第二个是重写ValidationRules函数。
地址如下:http://www.cnblogs.com/qleelulu/archive/2008/10/08/1305962.html
------解决方案--------------------
呵呵,关注一下
------解决方案--------------------
后台控制器:
C# code

  if (this.IsPost)
            {
                TryUpdateModel(user, new string[] {"Email", "Name", "Password", "NickName"});

                if (string.IsNullOrEmpty(user.Email))
                {
                    ModelState.AddModelError("Email", "请填写邮箱.");
                }
                else if (this.UserService.FindByEmail(user.Email) != null)
                {
                    ModelState.AddModelError("Email", "该邮箱已经被使用.");
                }

                if (string.IsNullOrEmpty(user.Name))
                {
                    ModelState.AddModelError("Name", "请填写用户名.");
                }
                else if (this.UserService.FindByName(user.Name) != null)
                {
                    ModelState.AddModelError("Name", "该用户名已经被使用.");
                }
                        ...

------解决方案--------------------
C# code

  if (ModelState.IsValid)
                {
                    this.UserService.Save(user);
                }
            }
            return View(user);