2010-07-06 5 views
0

Ici param je:C# 3.5 sauter routage MVC2 option

routes.MapRoute(
    "test", // Route name 
    "DataWarehouse/Distribution/{category}/{serialNo}", 
    new { controller = "DataWarehouse", 
      action = "Distribution", 
      category= UrlParameter.Optional, 
      serialNo = UrlParameter.Optional } 
); 

Catégorie et SerialNo sont les deux paramètres optionnels. Lorsque le routage est comme: DataWarehouse/Distribution/123, il traite toujours 123 comme valeur pour la catégorie.

Ma question est comment je peux faire pour savoir que le 1er param pourrait être soit catégorie ou serialNo, c'est-à-dire DataWarehouse/Distribution/{category} et DataWarehouse/Distribution/{serialNo}.

Répondre

0
DataWarehouse/Distribution/{category}/{serialNo} 

Seul le dernier paramètre peut être facultatif. Dans cette exemple, la catégorie ne peut pas être facultative pour des raisons évidentes.

0

Si vous savez ce que vos paramètres ressembleront vous pouvez ajouter un route constraint pour différencier les deux voies

Ex si votre série sont 1234-1234-1234 et votre catégorie ne sont pas comme ceci:

0

J'ai eu un problème similaire, j'essayais de router en fonction des données ({year}/{month}/{day}) où month ou day pouvait être optionnel. Ce que j'ai trouvé, c'est que je ne pouvais pas le faire avec un seul itinéraire. Je l'ai donc résolu en utilisant 3 routes, du générique au spécifique (année, année et mois, année et mois et jour). Je ne suis pas complètement satisfait, mais ça fonctionne. Donc, à condition que vous soyez à la recherche de routes et DataWarehouse/Distribution/{category}/{serialNo}, je pense que cela fonctionnerait pour vous.