Asp.net MVC Remplacer TextBox par DropDownList dans une view
Melancolie2010_2015
Messages postés
24
Statut
Membre
-
Melancolie2010_2015 Messages postés 24 Statut Membre -
Melancolie2010_2015 Messages postés 24 Statut Membre -
Bonjour à tous.
J'ai deux model
UtilisateurModel
DirectionModel
et ma vue
CreateOrEditUtilisateurView
Je voudrais remplacer le textbox de "DirectionId" par un dropdownlist rempli à partir du modèle "Direction"
Toutes mes recherches sont infructueuses.
Si quelqu'un a une solution ou un lien, je lui serai reconnaissant
J'ai deux model
UtilisateurModel
Public Class Utilisateur
Public Property Id As Integer
Public Property DirectionId As Integer
Public Property Departement As String
End Class
DirectionModel
Public Class Direction
Public Property Id As Integer
Public Property Valeur As String
Public Property Supprime As Boolean
End Class
et ma vue
CreateOrEditUtilisateurView
@ModelType ANNUAIRE.Utilisateur
@Code
ViewData("Title") = "Create or Edit"
Layout = "~/Views/Shared/_Layout.vbhtml"
End Code
<h2>Create Or Edit</h2>
@Using (Html.BeginForm())
@Html.AntiForgeryToken()
@<div Class="form-horizontal">
<h4>Utilisateur</h4>
<hr />
@Html.ValidationSummary(True, "", New With {.class = "text-danger"})
@Html.HiddenFor(Function(model) model.Id)
<div class="form-group">
@Html.LabelFor(Function(model) model.DirectionId, htmlAttributes:= New With { .class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(Function(model) model.DirectionId, New With {.htmlAttributes = New With {.class = "form-control"}})
@Html.ValidationMessageFor(Function(model) model.DirectionId, "", New With {.class = "text-danger"})
</div>
</div>
<div class="form-group">
@Html.LabelFor(Function(model) model.Departement, htmlAttributes:=New With {.class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(Function(model) model.Departement, New With {.htmlAttributes = New With {.class = "form-control"}})
@Html.ValidationMessageFor(Function(model) model.Departement, "", New With { .class = "text-danger" })
</div>
</div>
</div>
End Using
Je voudrais remplacer le textbox de "DirectionId" par un dropdownlist rempli à partir du modèle "Direction"
Toutes mes recherches sont infructueuses.
Si quelqu'un a une solution ou un lien, je lui serai reconnaissant
A voir également:
- Asp.net MVC Remplacer TextBox par DropDownList dans une view
- Voir sa maison sur google street view - Guide
- Remplacer disque dur par ssd - Guide
- View recovery logs - Guide
- Remplacer dans word - Guide
- Street view - Télécharger - Transports & Cartes
1 réponse
J'ai ajouté dans la classe Utilisateur de UtilisateurModel une propriété "Direction"
UtilisateurModel:
Dans la vue de Utilisateur, j'ai modifié le contrôle du champ
Dans le controller, j'ai ceci
Ca marche quand je fait "Create". Mais quand je fait "Edit", il me met cette erreur
System.InvalidCastException : 'Impossible d'effectuer un cast d'un objet de type 'ANNUAIRE.Utilisateur' en type 'System.Web.Mvc.IView'.'
à cette ligne
Je ne vois pas ce qui est anormal
UtilisateurModel:
Public Class Utilisateur Public Property Id As Integer Public Property DirectionId As Integer Public Property Departement As String Public Property Direction As IEnumerable(Of SelectListItem) End Class
Dans la vue de Utilisateur, j'ai modifié le contrôle du champ
<div class="form-group"> @Html.LabelFor(Function(model) model.Direction, htmlAttributes:=New With {.class = "control-label col-md-2"}) <div class="col-md-10"> @Html.DropDownListFor(Function(model) model.DirectionId, Model.Direction, New With {.htmlAttributes = New With {.class = "form-control"}}) @Html.ValidationMessageFor(Function(model) model.DirectionId, "", New With {.class = "text-danger"}) </div> </div>
Dans le controller, j'ai ceci
' GET: Utilisateurs/Create and Edit Function CreateEdit(ByVal id As Integer?) As ActionResult Dim modele = New Utilisateur With {.Direction = db.Directions.ToList().[Select](Function(x) New SelectListItem With {.Text = x.Valeur, .Value = x.Id})} If IsNothing(id) Then Return View(modele) Else If IsNothing(id) Then Return New HttpStatusCodeResult(HttpStatusCode.BadRequest) End If Dim Utilisateur As Utilisateur = db.Utilisateurs.Find(id) If IsNothing(Utilisateur) Then Return HttpNotFound() End If Return View(Utilisateur, modele) End If End Function
Ca marche quand je fait "Create". Mais quand je fait "Edit", il me met cette erreur
System.InvalidCastException : 'Impossible d'effectuer un cast d'un objet de type 'ANNUAIRE.Utilisateur' en type 'System.Web.Mvc.IView'.'
à cette ligne
Return View(Utilisateur, modele)du controller
Je ne vois pas ce qui est anormal