J'utilise le modèle d'application Web ASP.NET et essaie de permettre à un utilisateur de choisir un rôle lors de l'enregistrement.Modification d'un rôle avec html select box asp.net mvc4
Voici ce que j'ai obtenu pour le moment.
-t-il
Voir
<fieldset class="col-lg-5 .col-md-5">
<legend>Registration Form</legend>
<p>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
</p>
<p>
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password, new { @class = "form-control" })
</p>
<p>
@Html.LabelFor(m => m.ConfirmPassword)
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
</p>
<p>
@Html.DropDownListFor(model => model.Type, Model.TypeList)
</p>
<input type="submit" value="Register" class="btn btn-default" />
</fieldset>
Modèle
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
public string Type { get; set; }
public IEnumerable<SelectListItem> TypeList
{
get
{
return new List<SelectListItem>
{
new SelectListItem { Text = "athlete", Value = "athlete"},
new SelectListItem { Text = "coach", Value = "coach"},
};
}
}
}
Contrôleur
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
Roles.AddUserToRole(model.UserName, model.Type);
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Je suis l'impression que je suis proche, mais je ne peux pas obtenir calme et Je reçois cette erreur
Message d'erreur du compilateur: Models.RegisterModel> 'ne contient pas de définition pour' DropDownListFor 'et la meilleure surcharge de méthode d'extension' System.Web.Mvc.Html.SelectExtensions.DropDownListFor (System.Web.Mvc.HtmlHelper, System .Linq.Expressions.Expression>, System.Collections.Generic.IEnumerable) 'a des arguments non valides
Ouiii maintenant le chargement! Cependant, il semble dire system.web.webpages.html.selectlist article dans la boîte de sélection des options. – user3317526
Vous ne compreniez pas? Avez-vous encore des erreurs? Vous pouvez mettre à jour votre question avec plus de détails spécifiques. – SBirthare