Je cherche la meilleure méthode pour créer un modèle d'éditeur de liste déroulant avec MVC. Il semble y avoir plusieurs méthodes mais je ne trouve pas de méthode qui soit la meilleure, tout le monde semble le faire différemment. J'utilise MVC3 avec Razor, donc une méthode qui fonctionne avec ceci est préférée.Modèle d'éditeur ASP.NET MVC DropDown
Répondre
Il y a plusieurs façons et de dire qui est le mieux serait subjectif et pourrait ne pas fonctionner dans votre scénario qui, par la façon dont vous avez oublié de décrire dans votre question. Voici comment je le fais:
Modèle:
public class MyViewModel
{
public string SelectedItem { get; set; }
public IEnumerable<Item> Items { get; set; }
}
public class Item
{
public string Value { get; set; }
public string Text { get; set; }
}
Controller:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
// TODO: Fetch this from a repository
Items = new[]
{
new Item { Value = "1", Text = "item 1" },
new Item { Value = "2", Text = "item 2" },
new Item { Value = "3", Text = "item 3" },
}
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (!ModelState.IsValid)
{
// redisplay the view to fix validation errors
return View(model);
}
// TODO: The model is valid here =>
// perform some action using the model.SelectedItem
// and redirect to a success page informing the user
// that everything went fine
return RedirectToAction("Success");
}
}
Voir (~/Views/Home/Index.cshtml
):
@model MyApp.Models.MyViewModel
@{ Html.BeginForm(); }
@Html.EditorForModel()
<input type="submit" value="OK" />
@{ Html.EndForm(); }
modèle Editeur (~/Views/Home/EditorTemplates/MyViewModel.cshtml
):
@model MyApp.Models.MyViewModel
@Html.DropDownListFor(x => x.SelectedItem,
new SelectList(Model.Items, "Value", "Text"))
Personnellement, je pense que les éléments de la liste doivent être placés dans les données de vue pas le modèle de vue, mais cela dépend vraiment si vous affichez un menu déroulant qui ne change jamais (à l'aide des données d'affichage) ou si vous devrez le modifier dynamiquement (en utilisant un modèle de vue).
Dans l'exemple que vous envoyez des messages du même point de vue modèle à l'action de l'indice. L'action d'index est uniquement intéressée par l'élément sélectionné, donc il suffit de changer le paramètre de l'action d'index post à être sélectionné. De cette façon, le classeur du modèle examinera les paramètres du formulaire et remplira le paramètre d'index pour vous.
, je pense aussi qu'il serait préférable de passer une liste de SelectedListItems vers le bas à la vue de cette façon vous pas besoin de convertion et aurait pas besoin de la classe d'objet.
Ceci est mon approche de ce poste:
J'aime cette solution, mais il pourrait être un peu les boîtiers de Direct plus, comme l'utilisation de 'DependencyResolver' au lieu de' Activator' instancier –
En fait, je fait de nombreuses améliorations, mais je me sens trop paresseux pour mettre à jour l'article :) Peut-être Je vais en faire un nouveau alors je t'ai dit :) –
- 1. validation côté client pour asp.net mvc dropdown?
- 2. Aide avec asp.net mvc sélectionnez dropdown
- 3. Asp.Net MVC 2 Dropdown Affichage de System.Web.MVC.SelectListItem
- 4. Utilisation de NHibernate, ASP.NET MVC et Dropdown
- 5. MVC Templated Helper - DropDown
- 6. comment faire dropdown dans asp.net mvc comme en lecture seule?
- 7. Reliure modèle ASP.NET MVC
- 8. asp.net modèle mvc manquant
- 9. Modèle pour ASP.NET MVC
- 10. Question sur les listes ASP.NET MVC et DropDown
- 11. ASP.NET - DropDown DataBinding (? Rebind)
- 12. asp.net dropdown iniside datagrid
- 13. ASp.NET Dropdown and Dictionary
- 14. Liaison de modèle ASP.NET MVC
- 15. Alternatives au modèle ASP.NET MVC
- 16. asp.net mvc modèle personnalisé liant
- 17. modèle de liaison ASP.NET MVC
- 18. asp.net liant modèle mvc personnalisé
- 19. État du modèle ASP.NET MVC
- 20. ASP.NEt Dropdown ignore les changements
- 21. ASP.Net MVC Personnalisation du modèle Reliure
- 22. Problème avec liant modèle ASP.NET MVC
- 23. Bon modèle de dépôt pour asp.net mvc
- 24. ASP.NET MVC (2) modèle de consignation log4net
- 25. Liaison de modèle Tinymce avec ASP.NET MVC
- 26. Reliure modèle ASP.NET MVC compatible DDD?
- 27. ASP.NET MVC RC2 modèle tête après corps?
- 28. Modèle ASP.NET MVC est pas peuplant
- 29. Relations de modèle dans ASP.NET MVC
- 30. ASP.NET MVC 2 Liaison partielle du modèle
Merci pour cela, il semble être exactement ce que je veux. – Craig
Merci Darin. Mais le modèle d'éditeur n'a qu'une seule action (afficher la liste déroulante). Comment pouvez-vous simplement appeler le EditotFormModel()? Que dois-je faire si j'ai besoin de deux modèles d'éditeur, un pour la liste déroulante et l'autre pour la liste des cases à cocher? les deux je veux utiliser int la même vue? – Shyju