MVC DropDownListFor les Valeurs Null
Je vais avoir des problèmes à l'aide de la dropdownlistfor htmlhelper dans MVC. Lors de la post-retour se produit il n'y a rien sélectionné et les valeurs dans le modèle de la liste, et l'élément sélectionné sont nulles.
Voici mes Modèles:
namespace MvcTestWebApp.Models
{
public class Customer
{
public string name { get; set; }
public List<SelectListItem> members { get; set; }
public Member selected { get; set; }
}
public class Member
{
public string name { get; set; }
}
}
Contrôleur:
namespace MvcTestWebApp.Models
{
public class CustomerController : Controller
{
//
//GET: /Customer/
public ActionResult Index()
{
Customer cust = new Customer() { name = "Cust1" };
cust.members = new List<SelectListItem>();
cust.members.Add(new SelectListItem(){Text = "Bob"} );
cust.members.Add(new SelectListItem(){Text = "Dave"} );
return View(cust);
}
[HttpPost]
public ActionResult Index(Customer customer)
{
return View();
}
}
}
Et Vue:
@model MvcTestWebApp.Models.Customer
@{
ViewBag.Title = "Customer";
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title> Index </title>
</head>
<body>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Customer Data</legend>
@Html.HiddenFor(model => model.name)
@Html.DropDownListFor(model => model.selected, Model.members, "--Select--")
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
</body>
</html>
Lorsque je sélectionne quelque chose à partir de la liste sélectionner et cliquer sur le bouton soumettre les valeurs null sont retournés:
Quelqu'un peut jeter un peu de lumière sur ce que je fais mal?
OriginalL'auteur Christopher Townsend | 2013-04-17
Vous devez vous connecter pour publier un commentaire.
Le problème que vous rencontrez est que MVC ne sais pas comment traduire la valeur sélectionnée de la liste déroulante (qui est une chaîne de caractères) pour le Membre de l'objet.
Ce que vous devez faire est d'avoir un selectedValue propriété qui est utilisée pour définir la valeur dans la liste déroulante et de récupérer la valeur retournée.
Nouvelle Classe De La Clientèle:
Mise à jour de la liste Déroulante de contrôle:
Ce sera le retour de la valeur sélectionnée dans la liste déroulante dans la propriété selectedValue.
La raison que votre Liste de membres est retourné null est parce que le HTML ne retourne pas les options dans une liste déroulante, il retourne uniquement la valeur sélectionnée. Ainsi, lorsque l'information arrive dans la méthode, c'est qu'étant donné les valeurs des formulaires d'entrée de données.
Si vous voulez voir ce que l'information est envoyée vers le serveur, vous pouvez utiliser le développeur de la console et de capturer le retour de la requête Http
et/ou
Vous pouvez ajouter
FormCollection collection
les paramètres du contrôleur de l'action pour voir ce que les informations MVC utilise pour construire les objets qu'il passe à l'méthodes.+1 pour le "Vous pouvez ajouter FormCollection collection de paramètres du contrôleur de l'action pour voir ce que les informations MVC utilise pour construire les objets qu'il passe à la méthode." J'ai accidentellement mis attribut forme pour une autre forme et j'ai pensé que pour quelques heures, que mon DropDownListFor ne veux pas rentrer Guid... FormCollection m'a dit, que le problème se forme pas de modèle
OriginalL'auteur SBurris
Essayer de définir la valeur:
Changement de propriété d'assistance
@Html.DropDownListFor(model => model.selected.name, Model.members, "--Select--")
et à créer l'objet en OBTENIR une actionnew Customer() { name = "Cust1", selected = new Member() }
OriginalL'auteur webdeveloper
utiliser jQuery ajouter à résoudre le problème avec la facilité.
OriginalL'auteur Jerrime25