.net mvc 数据验证问题

Controller:

ContractedBlock.gif ExpandedBlockStart.gif Code
        public ActionResult UserInfo(string id)
        {
            ViewData[
"AllRoles"= Roles.GetAllRoles();
            MembershipUser a 
= Membership.GetUser(id);
            
if (a == null)
            {
                
return RedirectToAction("Err/用户名不存在");
            }
            var arr 
= new ArrayList();
            arr.AddRange(Roles.GetRolesForUser(id));
            ViewData[
"UserRoles"= arr;
            
return View(a);
        }

        [AcceptVerbs(HttpVerbs.Post)]
        
public ActionResult UserInfo(string id, FormCollection Form)
        {           
            ViewData[
"AllRoles"= Roles.GetAllRoles();
            MembershipUser a 
= Membership.GetUser(id);
            
if (a == null)
            {
                
return RedirectToAction("Err/用户名不存在");
            }
            var arr 
= new ArrayList();
            arr.AddRange(Roles.GetRolesForUser(id));
            ViewData[
"UserRoles"= arr;

            
if (Form["Email"== "")
            {
                ViewData.ModelState.AddModelError(
"Email""请填写电子邮件");
                
return View(a);
            }
            a.Email 
= Form["Email"];
            Membership.UpdateUser(a);

            
return View(a);
        }

 

View:

ContractedBlock.gif ExpandedBlockStart.gif Code
    <%MembershipUser p = (MembershipUser)ViewData.Model;%>
    
<%
        
string[] AllRoles = ViewData["AllRoles"as string[];
        ArrayList UserRoles 
= ViewData["UserRoles"as ArrayList;
    
%>
    
<div>
        
<fieldset>
            
<legend>用户<%=p.UserName%>的详细信息</legend>
            
<div style="width: 50%; float: left;">
                
<%using (Html.BeginForm()){%>
                
<p>
                    
<label for="username">
                        用户名称:
</label>
                    
<%=p.UserName%>
                    
<%= Html.Hidden("UserName")%>
                    
<%= Html.ValidationMessage("UserName")%>
                
</p>
                
<p>
                    
<label for="userpassword">
                        用户密码:
</label>
                    
<%= Html.Password("userpassword")%>
                    
<%= Html.ValidationMessage("userpassword")%>
                
</p>
                
<p>
                    
<label for="Email">
                        电子邮件:
</label>
                    
<%= Html.TextBox("Email")%>
                    
<%= Html.ValidationMessage("Email")%>
                
</p>
                
<p>
                    
<label for="Comment">
                        特定信息:
</label>
                    
<%= Html.TextBox("Comment")%>
                    
<%= Html.ValidationMessage("Comment")%>
                
</p>
                
<p>
                    
<label>
                        注册日期:
</label>
                    
<%= p.CreationDate%>
                
</p>
                
<p>
                    
<input type="submit" value="修改" />
                
</p>
                
<%}%>
            
</div>
            
<div style="width: 40%; float: left;">
                
<p>
                    
<%using (Html.BeginForm("UpdateUserInRoles/" + p.UserName, "Admin", FormMethod.Post, new { @id = "UpdateUserInRoles" }))
                      { 
%>
                    
<label>
                        加入角色:
</label>
                    
<%
                        
foreach (string a in AllRoles)
                        {
                            
if (UserRoles.Contains(a))
                            {
                                Response.Write(a 
+ Html.CheckBox(a, truenew { onclick = "document.getElementById('UpdateUserInRoles').submit();" }));
                            }
                            
else
                            {
                                Response.Write(a 
+ Html.CheckBox(a, falsenew { onclick = "document.getElementById('UpdateUserInRoles').submit();" }));
                            }
                        }
                      }
%>
                
</p>
            
</div>
            
<div style="clear: both; float: none;">
            
</div>
        
</fieldset>
    
</div>

 

 

当点击修改后出现

ContractedBlock.gif ExpandedBlockStart.gif Code
未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误: 


行 
33:                     <label for="Email">
行 
34:                         电子邮件:</label>
行 
35:                     <%= Html.TextBox("Email")%>
行 
36:                     <%= Html.ValidationMessage("Email")%>
行 
37:                 </p>
 

源文件: g:\200901mvc\mvc\Views\Admin\UserInfo.aspx    行: 
35 

堆栈跟踪: 


[NullReferenceException: 未将对象引用设置到对象的实例。]
   System.Web.Mvc.HtmlHelper.GetModelStateValue(String key, Type destinationType) 
+63
   System.Web.Mvc.Html.InputExtensions.InputHelper(HtmlHelper htmlHelper, InputType inputType, String name, Object value, Boolean useViewData, Boolean isChecked, Boolean setId, Boolean isExplicitValue, IDictionary`
2 htmlAttributes) +336
   System.Web.Mvc.Html.InputExtensions.TextBox(HtmlHelper htmlHelper, String name, Object value, IDictionary`
2 htmlAttributes) +34
   System.Web.Mvc.Html.InputExtensions.TextBox(HtmlHelper htmlHelper, String name) 
+44
   ASP.views_admin_userinfo_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer) 
in g:\200901mvc\mvc\Views\Admin\UserInfo.aspx:35
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
+256
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
+19
   System.Web.UI.Control.Render(HtmlTextWriter writer) 
+10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
+27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
+99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
+25
   ASP.views_shared_adminroles_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) 
in g:\200901mvc\mvc\Views\Shared\AdminRoles.Master:45
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
+256
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
+19
   System.Web.UI.Control.Render(HtmlTextWriter writer) 
+10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
+27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
+99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
+25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
+134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
+19
   System.Web.UI.Page.Render(HtmlTextWriter writer) 
+29
   System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) 
+43
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
+27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
+99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
+25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
+1266

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:
2.0.50727.3053; ASP.NET 版本:2.0.50727.3053 

 

 

这是为什么呢?

转载于:https://www.cnblogs.com/aoaob/archive/2009/02/11/1388328.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值