La valeur ne peut pas être null. Nom du paramètre: articles (DrodownList)

Je travaille avec ASP.NET MVC4 et maintenant je veux ajouter un dropdownlist avec les données de ma base de données mysql. C'est ce que je fais :

Dans mon vue (Registre.cshtml):`

<div class="control-group">
    @Html.LabelFor(m => m.DistrictID, new { @class= "control-label"})
    <div class="controls">
        @Html.DropDownListFor(model => model.DistrictID, new SelectList(ViewBag.Districts, "district_id", "district_name", Model.DistrictID))
    </div>
</div>

Dans mon Contrôleur (AccountController):

[AllowAnonymous]
public ActionResult Register()
{
    var districts = repository.GetDistricts();
    ViewBag.Districts = districts;

    return View(new RegisterModel());
}

//
//POST: /Account/Register

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{

    if (ModelState.IsValid)
    {
        //Attempt to register the User
        try
        {
            MembershipService.CreateUser(model.Name, model.FamilyName, model.BirthDate, model.Sex, model.Nationality, model.Email, model.UserName, model.Password, model.Street, model.StreetNr);

            FormsAuthentication.SetAuthCookie(model.UserName, false);
            return RedirectToAction("Index", "Home");
        }
        catch (ArgumentException ae)
        {
            ModelState.AddModelError("", ae.Message);
        }
    }

    //If we got this far, something failed, redisplay form
    return View(model);
}

- Je obtenir les Districts de mon Référentiel comme ceci:

 public IQueryable<district> GetDistricts()
 {
     return from district in entities.districts
            orderby district.district_name
            select district;
 }

Mon RegisterModel:

public class RegisterModel
{
[Required]
[Display(Name = "Given name")]
public string Name { get; set; }
[Required]
[Display(Name = "Family name")]
public string FamilyName { get; set; }
[Required]
[Display(Name = "Birthdate")]
public DateTime BirthDate { get; set; }
[Required]
[Display(Name = "Sex")]
public string Sex { get; set; }
[Required]
[Display(Name = "Nationality")]
public string Nationality { get; set; }
[Required]
[Display(Name = "Email")]
public string Email { get; set; }
[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; }
[Required]
[Display(Name = "Street")]
public string Street { get; set; }
[Required]
[Display(Name = "Street Number")]
public int StreetNr { get; set; }
[Required]
[Display(Name = "District")]
public IEnumerable<SelectListItem> Districts { get; set; }
public int DistrictID { get; set; }
}

La dropdownlist est rempli avec les districts, mais quand je clique sur "s'Enregistrer", j'obtiens cette erreur:

Valeur ne peut pas être null.
Nom du paramètre: éléments

Description: Une exception non gérée s'est produite lors de l'exécution de
la demande web actuelle. Veuillez consulter la trace de la pile pour plus d'
informations sur l'erreur et où elle a son origine dans le code.

Détails De L'Exception: System.ArgumentNullException: la Valeur ne peut pas être null.
Nom du paramètre: éléments

Quand je debug de la méthode, je vois que la ModelState n'est PAS valide.

Clé 11 est DistrictID et comprend la districtid mais la Clé de 12 Districts et donne l'erreur: "The district field is required" ...

Ce que je fais mal?

Exception est levée que lorsque la validation échoue, ou lorsque la validation est passé ainsi?
Double Possible de Ce qui est une exception NullReferenceException, et comment puis-je résoudre ce problème?

OriginalL'auteur nielsv | 2013-08-21