ddd*_*ddd 1 asp.net-mvc asp.net-membership
我已经解决了这个问题2天了,这是一个容易出问题的问题,即使将其与其他有效的项目进行比较,我也无法看到代码中的错误.
你能帮忙吗?
我正在使用ASP.NET成员资格和使用ASP.NET MVC生成的帐户控制器类来处理我网站的帐户部分.
但是,当注册并且用户将某些字段留空时,输入的文本在重新显示页面时不会显示.
这是注册后发布行动
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(FormCollection formValues)
{
ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
if (ValidateRegistration(formValues))
{
// Attempt to register the user
MembershipCreateStatus createStatus = MembershipService.CreateUser(formValues["username"], formValues["password"], formValues["email"]);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuth.SignIn(formValues["username"], false /* createPersistentCookie */);
return RedirectToAction("CreateCustomer", "Account");
}
else
{
ModelState.AddModelError("_FORM", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View();
}
Run Code Online (Sandbox Code Playgroud)
和ValidateRegistration功能
private bool ValidateRegistration(FormCollection formValues)
{
if (String.IsNullOrEmpty(formValues["userName"]))
{
ModelState.AddModelError("username", "You must specify a username.");
}
if (String.IsNullOrEmpty(formValues["email"]))
{
ModelState.AddModelError("email", "You must specify an email address.");
}
if (formValues["password"] == null || formValues["password"].Length < MembershipService.MinPasswordLength)
{
ModelState.AddModelError("password",
String.Format(CultureInfo.CurrentCulture,
"You must specify a password of {0} or more characters.",
MembershipService.MinPasswordLength));
}
if (!String.Equals(formValues["password"], formValues["confirmPassword"], StringComparison.Ordinal))
{
ModelState.AddModelError("_FORM", "The new password and confirmation password do not match.");
}
if (!String.Equals(formValues["email"], formValues["confirmEmail"], StringComparison.Ordinal))
{
ModelState.AddModelError("confirmEmail", "The email and confirmation email addresses do not match.");
}
return ModelState.IsValid;
}
Run Code Online (Sandbox Code Playgroud)
以防这里是Register视图
"%>寄存器
使用下面的表单创建一个新帐户.
密码必须至少为<%= Html.Encode(ViewData ["PasswordLength"])%>个字符.
<%= Html.ValidationMessage("username") %>
</td>
</tr>
<tr>
<td>Email:</td>
<td><%= Html.TextBox("email") %>
<%= Html.ValidationMessage("email") %>
</td>
</tr>
<tr>
<td>Confirm Email:</td>
<td>
<%= Html.TextBox("confirmEmail") %>
<%= Html.ValidationMessage("confirmEmail") %>
</td>
</tr>
<tr>
<td>Password:</td>
<td>
<%= Html.Password("password") %>
<%= Html.ValidationMessage("password") %>
</td>
</tr>
<tr>
<td>Confirm password:</td>
<td>
<%= Html.Password("confirmPassword") %>
<%= Html.ValidationMessage("confirmPassword") %>
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Register" />
</td>
</table>
</div>
<% } %>
Run Code Online (Sandbox Code Playgroud)
马上我猜测:
// If we got this far, something failed, redisplay form
return View();
Run Code Online (Sandbox Code Playgroud)
关闭你的第一部分是杀了你.视图需要显示一些东西,而你却什么都不给它.我通过创建传入值的副本并通过View方法调用将其推回来处理此问题:
View(returnedValues);
Run Code Online (Sandbox Code Playgroud)
其中ResetPageCreate是发送的原始值的副本(如果您必须更改某些信息,请在保存尝试之前更改信息).这样,View就可以使用模型,因此可以显示值.
| 归档时间: |
|
| 查看次数: |
1672 次 |
| 最近记录: |