2011-02-18 2 views
1

j'ai une URLquelle est la meilleure façon de créer une action de contrôleur mvc asp.net avec beaucoup de variables

http://www.mysite.com/RunReport 

et une action de contrôleur:

[CompressFilter] 
    public ActionResult RunReport(int field1, int field2, int field3, int field4, int field5, int field6, . . .) 

afin d'exécuter la requête avec un filtre, vous vent d'avoir à faire quelque chose comme ceci:

http://www.mysite.com/RunReport/0/0/0/0/0/1/0. . . . 

est-il une meilleure façon de faire cela sans une telle url laid et mettre en déroute ing? Je souhaite pouvoir avoir une URL persistante mappée à des requêtes spécifiques.

+2

-vous sûr que l'action ne devrait pas être un POST? Si oui, vous pourriez utiliser un modèle de liaison un paramètre - données dans les champs de formulaire – RPM1984

+0

@ RPM1984 - Je voudrais éviter d'avoir un formulaire si possible car j'ai ces liens partout et (plus important encore) je veux avoir des URL persistantes qui mappent à des requêtes spécifiques – leora

+0

assez juste, dans ce cas, je suis intéressé de voir les réponses, je ne pense pas que ce soit possible, un HTTP GET n'a pas bo dy - juste l'URL et les paramètres QS. peut-être pourriez-vous utiliser un truc de type bit/drapeau pour réduire le * nombre * de paramètres. Quoi qu'il en soit, les champs doivent aller dans l'URL en quelque sorte. – RPM1984

Répondre

4

Vous ne devez pas avoir ces champs dans la route. Vous pouvez les avoir dans une chaîne de requête comme ceci:

RunReport field3 = 1

Vous pouvez ensuite les combiner dans une classe POCO comme si

public class MyModel 
{ 
    int? Field1 { get; set; } 
    int? Field2 { get; set; } 
    int? Field3 { get; set; } 
} 

Cela rend vos champs facultatifs et votre modèle? La classe peut aussi avoir quelques connaissances, qui peuvent déterminer quel rapport vous voulez exécuter par exemple.

Et l'action du contrôleur

public ActionResult RunReport(MyModel model) 

Cela fonctionne avec GET ou POST (ou tout autre verbe que vous voulez utiliser

Questions connexes