11
votes

MVC Dropdownlist pour les valeurs nulles

J'ai des problèmes à l'aide de la liste DropdownListor HTMLHelper dans MVC. Lorsque le post-retour se produit, il n'ya rien de sélection et les valeurs du modèle de la liste, et l'élément sélectionné est NULL.

Voici mes modèles: P>

    @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>


0 commentaires

3 Réponses :


0
votes
cust.members.Add(new SelectListItem(){Value = "Bob", Text = "Bob"} );
cust.members.Add(new SelectListItem(){Value = "Dave", Text = "Dave"} );

2 commentaires

Nope ne fonctionne toujours pas. Bon essayez de :) Je pensais que cela aurait pu l'avoir fait après un visagePalm mais pas d'aller, c'est toujours null. J'ai aussi essayé de changer le Cust.Selected à un SelectListitem et cela n'a pas fonctionné non plus.


@Christoptownsend Modification de la propriété Helper @ html.dropdownlistor (modèle => Modèle.selected.name, modèle.members, "--elect -") et créer un objet dans Obtenir Action Nouveau client ( ) {nom = "cust1", sélectionné = nouveau membre ()}



21
votes

Le problème que vous utilisez est que MVC ne sait pas comment traduire la valeur sélectionnée de la liste déroulante (qui est une chaîne) sur l'élément d'objet.

Ce que vous devriez faire est d'avoir une propriété sélectionnée Est utilisé pour définir la valeur dans la liste déroulante et récupérer la valeur renvoyée. P>

Nouvelle classe client: P>

[HttpPost]
public ActionResult Index(Customer customer, FormCollection collection)
{

  return View();
}


1 commentaires

+1 pour "Vous pouvez ajouter une collection FormCollection aux paramètres de l'action du contrôleur pour voir quelles informations utilisent MVC pour construire les objets qu'il passe aux méthodes." J'ai défini accidentellement une forme Atribute pour une autre forme et j'ai pensé quelques heures que ma liste déroulanteListe ne veut pas retourner guid ... FormCollection m'a dit que le problème est de la forme



-4
votes

Utilisez JQuery Prepend pour résoudre le problème avec facilité. XXX


0 commentaires