web-dev-qa-db-fra.com

Remplissage de la liste déroulante dans ASP.net Core

Est-ce que quelqu'un sait comment gérer les Dropdowns dans le noyau Asp.net. Je pense que je me suis rendu très compliqué pour comprendre le nouveau concept de base d'Asp.net. (Je suis nouveau sur Asp.net Core).

J'ai des modèles appelés Driver, Vehicle. Fondamentalement, on peut créer un tas de véhicules dans le maître, puis l'attacher au conducteur. Pour que le conducteur soit associé à un véhicule.

Mon problème est que j'utilise également viewmodel dans certaines régions pour combiner deux modèles différents. (Peu compris du modèle par défaut)

Mon problème est que je n'ai aucune idée de la prochaine étape, car ASP.net Core est très récent, il n'y a pas beaucoup de tutoriels et de questions/réponses disponibles.

Modèle de pilote

public class Driver
{
    [Required]
    public int Id { get; set; }

    [Required]
    public string ApplicationUserId { get; set; }

    [Required]
    public int VehicleId { get; set; }

    [Required]
    public string Status { get; set; }


    public virtual ApplicationUser ApplicationUser { get; set; }
    public virtual Vehicle Vehicle { get; set; }
}

Modèle de véhicule

public class Vehicle
{

    [Required]
    public int Id { get; set; }

    [Required]
    public string Make { get; set; }
    public string Model { get; set; }

    [Required]
    public string PlateNo { get; set; }
    public string InsuranceNo { get; set; }

}

AfficherModèle de pilote

    public class DriverViewModel
{
    [Required]
    [Display(Name = "ID")]
    public int ID { get; set; }

    [Required]
    [Display(Name = "User ID")]
    public string ApplicationUserId { get; set; }

    [Required]
    [Display(Name = "Vehicle ID")]
    public IEnumerable<Vehicle> VehicleId { get; set; }
    //public string VehicleId { get; set; }

    [Required]
    [Display(Name = "Status")]
    public string Status { get; set; }


}

Voici ma vue

<div class="col-md-10">
   @*<input asp-for="VehicleId" class="form-control" />*@
   @Html.DropDownList("VehicleId", null, htmlAttributes: new { @class = "form-control"})
   <span asp-validation-for="VehicleId" class="text-danger" />
</div>
7
Kirk

En regardant la documentation, il semble que le noyau asp.net soit en train de s'éloigner des assistants HTML et d'utiliser des assistants de balises. Le lien suivant devrait aider

https://docs.asp.net/en/latest/mvc/views/working-with-forms.html#the-select-tag-helper

plus précisément

@model CountryViewModel

<form asp-controller="Home" asp-action="Index" method="post">
<select asp-for="Country" asp-items="Model.Countries"></select> 
<br /><button type="submit">Register</button>
</form>

Notez l'utilisation de "asp-for" qui fait référence à l'attribut Model à lier et l'utilisation de "asp-items" qui fait référence à la source d'attribut de modèle pour la liste des éléments de la liste de sélection et comment il est appliqué à la balise de sélection

L'exemple de modèle utilisé dans la documentation est référencé ci-dessous pour être complet

namespace FormsTagHelper.ViewModels
{
public class CountryViewModel
{
    public string Country { get; set; }

    public List<SelectListItem> Countries { get; } = new List<SelectListItem>
    {
        new SelectListItem { Value = "MX", Text = "Mexico" },
        new SelectListItem { Value = "CA", Text = "Canada" },
        new SelectListItem { Value = "US", Text = "USA"  },
    };
}
}
22
Bill