J'essaie de configurer mon itinéraire afin qu'il reflète l'onglet sur lequel l'utilisateur se trouve dans la page. Photos ci-dessous. Si l'état est « à venir » Je veux avoir juste un itinéraire avec l'état = à venir comme celui-ci sans mois ou annéeConfiguration de mon itinéraire dans Asp.Net MVC
www.mysite.com/Schedule/Host/Upcoming
si l'état est « passé » J'ai besoin d'exiger d'un mois et l'année comme celui-ci
www.mysite.com/Schedule/Host/Past/March/2016
Le problème est que je peux entrer dans tout le contrôleur et l'action
Horaire/Hôte
et la route passe à travers la méthode d'action. Je veux empêcher cela.
voici quelques exemples
www.mysite.com/Schedule/Host -> pas de passe avec juste le contrôleur et l'action
www.mysite.com/Schedule/Host/Upcoming -> d'accord avec aucun mois ou année
www.mysite.com/Horaire/Hôte/Past/Mars/2016 -> lorsque l'état = passé, vous devez fournir un mois et l'année
Voici ce que la page ressemblera à venir comme l'état
Voici ce qu'il ressemblera avec le passé que l'état
Voici mon routage
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "ScheduleByState",
url: "{controller}/{action}/{state}/{month}/{year}",
defaults: new { month = UrlParameter.Optional, year = UrlParameter.Optional}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Voici ma méthode l'action Hôte
public ActionResult Host(string state, string month, string year)
{
ViewBag.MenuItem = "schedule";
ViewBag.UserMenuItem = "host";
return View();
}
chaîne est un type nullable. Vous devez gérer la vérification de la valeur du paramètre au niveau de la méthode d'action. Aussi, vous pouvez envisager d'utiliser les types appropriés (int pour le mois et l'année) – Shyju