Я пытаюсь проверить некоторые поля формы, но всегда возникают ошибки в помощниках формы HTML. Это как-то связано с привязкой модели, но я не могу заставить ее работать.
Что происходит ниже, я получаю значения формы из формы, используя объект FormsCollection, затем я передаю извлеченные значения в слой USerSErvice и проверяю их. Когда я нажимаю на форму, она падает на Html.Helpers
Спасибо!
[In UserController]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection formValues)
{
// Get form values
string username = formValues["Username"];
string email = formValues["Email"];
string confirmEmail = formValues["ConfirmEmail"];
string password = formValues["Password"];
string confirmPassword = formValues["ConfirmPassword"];
bool themeRole = Convert.ToBoolean(formValues["ThemeRole"]);
bool valid = _service.CreateUser(username, email, confirmEmail, password, confirmPassword, themeRole);
// If user was created then
if (valid)
{
ViewData["Success"] = true;
}
else
{
ViewData["Success"] = false;
}
return View();
}
[UserService]
регион Создать пользователя
/// <summary>
/// Create User
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public bool CreateUser(string username, string email, string confirmEmail, string password, string confirmPassword, bool themeRole)
{
// validate values from form
if (String.IsNullOrEmpty(username) == true)
{
_modelState.AddModelError("Username", "Please provide a username");
}
if (String.IsNullOrEmpty(password) == true)
{
_modelState.AddModelError("Password", "Please provide a password");
}
else if (password.Length < 6)
{
_modelState.AddModelError("Password", "Minimum length for password is 6 characters");
}
if (String.IsNullOrEmpty(confirmPassword) == true)
{
_modelState.AddModelError("ConfirmPassword", "Please confirm your password in the Confirm Password field");
}
else if (!confirmPassword.Equals(password) == true)
{
_modelState.AddModelError("ConfirmPassword", "Passwords do not match");
}
if (String.IsNullOrEmpty(email) == true)
{
_modelState.AddModelError("Email", "Please provide an email address");
}
if (String.IsNullOrEmpty(confirmEmail) == true)
{
_modelState.AddModelError("ConfirmEmail", "Please confirm your email addres in the confirm email field");
}
else if (!confirmEmail.Equals(email) == true)
{
_modelState.AddModelError("ConfirmEmail", "Emails do not match");
}
// if all is good - create account otherwise it fails
if (_modelState.IsValid == true)
{
// Encode password
byte[] generatedSalt = Utility.GeneratePasswordSalt(new byte[16]);
string saltString = Encoding.Unicode.GetString(generatedSalt);
string passwordSalt = Convert.ToBase64String(generatedSalt);
string newHashedPassword = Utility.EncodePassword(password, passwordSalt);
// Update user object with new user information
User newUser = new User();
newUser.Username = username;
newUser.Password = newHashedPassword;
newUser.PasswordSalt = passwordSalt;
newUser.Email = email;
newUser.Role = themeRole;
// Add user
_repository.AddUser(newUser);
return true;
}
else
{
return false;
}
}
[Сообщение об ошибке]
Object reference not set to an instance of an object.
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
Ошибка источника:
Строка 22:
Строка 23: имя пользователя:
Строка 24: <% = Html.TextBox ("Имя пользователя")%>
Строка 25:
Строка 26: