ASP.NET MVC - obtenir la liste des objets à partir de la chaîne de requête
Je suis passé d'une liste de paramètres. Telles que "Nom", "Id", "Type". Il y aura un grand nombre de ces url, comme ceci:
"Name=blah1,Id=231,Type=blah1;Name=blah2,Id=2221,Type=blah1;Name=blah3,Id=45411,Type=blah3;"
Je me demande si il existe un moyen de cartographier les paramètres de la requête à une Liste d'objets. Donc, je peux créer un objet:
MyTestObject {Nom;Id;Type} et peut dire dans mon contrôleur
Index(IList<MyTestObject> params)
params sera rempli avec les données de chaîne de requête.
Quelque chose qui est similaire à http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
Avez-vous essayé de mettre en œuvre ce qui a été suggéré dans ce lien? Je l'ai déjà utilisé et qu'il répondait à mes besoins.
OriginalL'auteur dev.e.loper | 2011-07-18
Vous devez vous connecter pour publier un commentaire.
Oui, ASP.NET MVC peut se lier automatiquement des collections à l'action params, mais vous avez besoin pour passer vos paramètres en tant que de valeurs, d'ailleurs, il ressemble à beaucoup de paramètres que vous allez passer dans la chaîne de requête. Un coup d'oeil à ce un http://weblogs.asp.net/nmarun/archive/2010/03/13/asp-net-mvc-2-model-binding-for-a-collection.aspx
Fondamentalement, ce que vous devez faire:
1) Créer votre classe qui contiendra votre params
2) Créer le modèle qui vous permettrait de passer à votre vue
3) Créer votre collection dans votre
[HttpGet]
action et le passer à votre vue:4) Itérer votre collection dans la vue
5) Que sur votre
[HttpPost]
action que vous pouvez prendre votre params dans la collectionou
P. S
En outre, si vous voulez obtenir tous votre formulaire params dans le contrôleur, vous pouvez aller simple comme ça:
OriginalL'auteur Kuncevič
Vous pouvez vous les valeurs de fournisseur, et il remplira les valeurs de la chaîne de requête dans un objet unique. C'est ce que vous feriez si vous n'allez pas créer un Modèle de Vue.
Transformer la chaîne de Requête dans un FormCollection via:
Il suffit de le déposer dans votre contrôleur.
OriginalL'auteur Lucent Fox
Vous pouvez créer un modèle de liaison personnalisé, qui fonctionne de la
Request.QueryString
collection, plutôt que de l'ordinaireFormCollection
.E. g:
Puis l'installation de votre
[HttpGet]
des mesures en conséquence:Vous pouvez également vous inscrire à l'échelle mondiale si vous le souhaitez, e.g sur
Application_Start()
:Puis vous le besoin juste le modèle de votre action:
Ayant dit tout cela, si vous avez ce nombre de paramètres, on doit se demander d'où viennent ces paramètres proviennent de? Le plus probable d'un formulaire sur une autre page.
Dans ce cas, cela doit être un
[HttpPost]
action, avec les paramètres dans le formulaire de collecte, puis de l'ordinaire de la liaison de modèle MVC prendra soin de le code ci-dessus pour vous.+1 c'est de Cette façon que j'ai toujours fait.
Je peux faire la suite? Il semble être une solution simple. stackoverflow.com/questions/6739211/...
si cela fonctionne pour vous, c'est sûr. Toutefois, il pourrait faire l'entretien difficile, car il n'est pas immédiatement clair comment la liaison de travail, et vous devez maintenir deux endroits (génération de l'URL, et le modèle de convention). Des classeurs de modèles personnalisés de façon explicite, et une seule place pour assurer la liaison. Cependant, tout ce qui fonctionne pour vous.
OriginalL'auteur RPM1984
J'ai effectivement suivi les conseils dans le l'article de M. Haack j'ai créé une classe avec tous les paramètres de propriétés publiques. Ensuite, j'ai eu une vue de prendre une liste d'objets de ce type. Si le paramètre de requête noms suivent un certain modèle (ajouté par index), puis-je obtenir une liste de mon objet rempli automatiquement et je n'ai pas à n'importe quel manuel d'analyse. C'est la solution la plus simple pour moi.
Exemple:
requête param objet:
dans la méthode du contrôleur:
puis-je m'assurer que la chaîne de requête est formaté de la manière suivante(ajouté par indice):
Dans mon contrôleur, donneesrequete paramètre de liste contient deux objets renseigné avec les données correctes.
OriginalL'auteur dev.e.loper
Sur une note connexe, je cherchais un moyen de les énumérer dans la chaîne de Requête de nom-valeur de la collection, et c'est ce que je suis venu avec:
Ce code va vous donner tous les noms et de leurs valeurs dans la chaîne de Requête.
N'a pas vraiment d'importance. Voir le commentaire suivant stackoverflow.com/questions/1884906/...
Le problème, c'est quand le code est compilé dans Visual Studio 2013, nous obtenons une erreur de compilation si vous déclarez une variable dans une boucle for each. Peut-être il ya une certaine configuration qui pourrait empêcher cela, mais, par défaut, nous obtenons une erreur de compilation.
OriginalL'auteur Erik K.