[MVC3] Utilisation des dropdownfor
Salut,
Nous avons besoin d'utiliser des dropdownlist.
Nous avons créé le code suivant :
Contrôleur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
// **************************************
// URL: /Account/Register
// **************************************
//[Authorize(Roles="Admin")]
public ActionResult Register()
{
return View(PrepareRegisterModel());
}
private RegisterModel PrepareRegisterModel()
{
RegisterModel toReturn = new RegisterModel();
GroupPurchasePortalRepositories _context = new GroupPurchasePortalRepositories();
using (_context)
{
var genresList = _context.Genre_Rep.GetAll().OrderBy(g => g.SortIndex).ToList();
List<SelectListItem> availableGenres = new List<SelectListItem>();
foreach (var g in genresList)
{
availableGenres.Add(
new SelectListItem()
{
Selected = false,
Value = g.Id.ToString(),
Text = g.Name
}
);
}
availableGenres.Insert(0, new SelectListItem() { Selected = true, Value = GroupPurchasePortal.Layers.DataLayer._DataLayer_Base.ddlNotSetItemId.ToString(), Text = string.Empty });
ViewBag.PasswordLength = MembershipService.MinPasswordLength;
toReturn.Genres = availableGenres;
}
return toReturn;
}
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);
if (createStatus == MembershipCreateStatus.Success)
{
FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View(PrepareRegisterModel());
} |
Vue
Code:
1 2 3 4 5 6 7 8
|
<div class="editor-label">
@Html.LabelFor(m => m.Genre)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.Genre, (IEnumerable<SelectListItem>)Model.Genres)
@Html.ValidationMessageFor(m => m.Genre)
</div> |
Model
Code:
1 2 3 4 5 6 7 8 9 10
|
public class RegisterModel
{
//Ajouts spécifiques
public IEnumerable<SelectListItem> Genres { get; set; }
[Display(Name = "Genre")]
public IEnumerable<SelectListItem> Genre { get; set; }
...
} |
Coté base, les genres ont un Id int et un name nvarchar(50)
Notre code ne fonctionne pas. On a testé pas mal d'options mais sans succès. Vous n'aurriez pas un exemple de liste déroulante qui fonctionne ?
D'avance merci
Laurent