Вы обязательно должны использовать модели представлений, строго типизированные представления и избавляться от любых FormCollection
и магических строк, например:
public class RegisterUserViewModel
{
public string UserName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string Serial { get; set; }
public int PasswordLength { get; set; }
}
и затем:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(RegisterUserViewModel model)
{
model.PasswordLength = MembershipService.MinPasswordLength;
// In a real app, actually register the user now
if (ValidateRegistration(model.UserName, model.Email, model.Password, model.Password))
{
// Attempt to register the user
MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email, model.Serial);
if (createStatus == MembershipCreateStatus.Success)
{
//TODO userinformation
datacontext.SaveChanges();
FormsAuth.SignIn(model.UserName, false /* createPersistentCookie */);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("_FORM", ErrorCodeToString(createStatus));
return View(model);
}
}
...
}
Мастер приложений ASP.NET MVC 3 по умолчанию в Visual Studio создает пример того, как сделать это в AccountController
.