Controller:
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);
}
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:
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, true, new { onclick = "document.getElementById('UpdateUserInRoles').submit();" }));
}
else
{
Response.Write(a + Html.CheckBox(a, false, new { onclick = "document.getElementById('UpdateUserInRoles').submit();" }));
}
}
}%>
</p>
</div>
<div style="clear: both; float: none;">
</div>
</fieldset>
</div>
<%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, true, new { onclick = "document.getElementById('UpdateUserInRoles').submit();" }));
}
else
{
Response.Write(a + Html.CheckBox(a, false, new { onclick = "document.getElementById('UpdateUserInRoles').submit();" }));
}
}
}%>
</p>
</div>
<div style="clear: both; float: none;">
</div>
</fieldset>
</div>
当点击修改后出现
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
未将对象引用设置到对象的实例。
说明: 执行当前 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
这是为什么呢?