我想配置我的路线,以便它反映用户在页面内的标签。下面的图片。 如果状态是“即将”我想只是与状态=路线中即将像这样没有一个月或一年配置我的路线在Asp.Net MVC
www.mysite.com/Schedule/Host/Upcoming
如果状态是“过去”我需要需要一个年份和月份这样
www.mysite.com/Schedule/Host/Past/March/2016
的问题是,我可以进入在短短控制器和动作
附表/主机
和路线获得通过的行动方法。我想阻止这一点。
这里有一些例子
www.mysite.com/Schedule/Host - >没有及格只有控制器和动作
www.mysite.com/Schedule/Host/Upcoming - >好的没有月份或年份
www.mysite。COM /计划/主机/过去/月/ 2016 - >当状态=过去,你必须提供一个年份和月份
下面是该网页将会是什么样即将作为国家
这里是它的外观像过去那样的状态
这里是我的路由
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 }
);
}
这里是我的操作方法主机如果
public ActionResult Host(string state, string month, string year)
{
ViewBag.MenuItem = "schedule";
ViewBag.UserMenuItem = "host";
return View();
}
字符串是可为空的类型。您需要在操作方法级别处理参数值检查。你也可以考虑使用适当的类型(int为月和年) – Shyju