Я работаю над этой проблемой уже 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();
}
И функция проверки регистрации
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;
}
И на всякий случай вот представление реестра
"%>
регистр
Создать новую учетную запись
Используйте форму ниже, чтобы создать новую учетную запись.
Длина пароля должна составлять не менее <% = Html.Encode (ViewData ["PasswordLength"])%> символов.
<% = Html.ValidationSummary ()%>
<% using (Html.BeginForm ()) {%>
Имя пользователя:
<% = Html.TextBox ("username")%>
<%= 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>
<% } %>