2 votes

ASP.net mvc 4 : comment utiliser un menu déroulant ?

Je suis novice en ASP.net MVC 4 (je viens de webforms) et je suis donc un peu perdu sur la façon de réaliser un certain type de fonctionnalité.

J'ai créé une liste déroulante en utilisant

<select>
@for(var item in ViewBag.Items)
{
    <option value="@item.ID">@item.name</option>
}
</select>

et disons que je crée un bouton "ajouter".

<input type="submit" value="Add" />

et j'ai une table, appelons la table "voitures", avec une colonne appelée "CarID".

Ce que je veux, c'est qu'en appuyant sur le bouton d'ajout, une nouvelle ligne soit ajoutée à la table des voitures avec l'ID de la voiture sélectionnée par l'utilisateur dans la liste déroulante.

Comment puis-je faire en sorte que cela se produise ?

3voto

Kami Points 9721

Vous devrez configurer un form autour du contrôle ainsi que quelques attributs html sur l'objet select .

<form action="/Cars/Add" method="post">
   <select name="carId">
     @for(var item in ViewBag.Items)
     {
       <option value="@item.ID">@item.name</option>
     }
   </select>

   <input type="submit" value="Add" />
</form>

Maintenant, créez un nouveau contrôleur nommé Cars et ajouter une action Add comme tel.

public class CarsController : Controller
{
    public ActionResult Add(int carId)
    {
        // TODO : Validate the carId
        // TODO : Do the DB stuff to insert the car as you would in winforms
        return View("AddComplete"); // or whatever view
    }
}

L'exemple ci-dessus génère un formulaire qui soumettra une variable appelée carId a Add action. Le gestionnaire de l'action va ensuite la valider et l'ajouter à la base de données.

Il faut se rappeler qu'avec le HTML, il n'y a pas d'état, c'est-à-dire qu'à chaque fois que la page est chargée, tout ce qui est pertinent doit être transmis ou chargé.

Il s'agit de quelques-uns des concepts fondamentaux du développement MVC en c#. Il peut donc être utile de lire les bases de ce concept.

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4 .

http://www.asp.net/mvc/tutorials

0voto

Andrey.Gubal Points 1629

En MVC, une meilleure décision serait de déplacer toute la logique de la vue vers le contrôleur :

Si vous avez un modèle de voiture :

public class car
{
    public string carname {get;set;}
    public int carID {get; set;}
}

Alors vous pouvez créer SelectList dans la méthode d'action de votre contrôleur :

public ActionResult CreateNewRow()
{
    //**create selectList in controller
    var carlist = new List<SelectListItem>();
    var cars = from n in db.Cars
              select new SelectListItem
        {
             Text = n.carname,
             Value = n.CarID.ToString()
        };
    foreach (var item in cars)
    carlist.Add(item);

    ViewBag.cars = cars

    return View();
}

Alors, à votre avis, il vous suffit de faire quelque chose comme ceci :

@using(Html.BeginForm())
{
    @Html.DropDownListFor(model => model.carID, (SelectList)ViewBag.cars)

    <input type="submit" value="ok" />
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X