routes.MapRoute(
"aa",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
你还没有理解mvc路由的意义,你配置的路由本身就有问题。你如果不对路径做特殊处理,只是想获取参数,那你可以不用去配置路由。就像上面一样。我就拿你的参数“Id,Date”来说。不用重新配置路由,你直接下面这样访问,就可以了,
http://www.abc.com/action/index?id=1&date="2012-12-12"
路由是设定mvc访问的模式,你不可能在路由里面把参数格式化,如果你都把参数固定了,那项目中的其他页面访问参数不就有问题了。
楼主并没有理解错路由机制,只是他不想让别人看见action而已,我的是这样:
请求:http://localhost:2097/getURLParames/999.html
页面显示:传送过来的路径是: 999
路由匹配:routes.MapRoute(
"start2", // 路由名称
"getURLParames/{url}.html", // 带有参数的 URL
new { controller = "WebForm", action = "getURL", url = "2012-3-1"} // 参数默认值
);
Action方法: public ActionResult getURL(string url)
{
ViewData["Url"] = url;
return View("showpararmes");
}
PS:当你请求的Action后面带有参数时,注意在定义Action的时候把参数也写到方法的参数中,例如getURL(string url) 括号内的string url,这样就可以获取Action后面的参数.路由器只不过是对URL进行加功的一个东西而已,如果不打算重新定义请求的URL,就不用写路由,不知回答是否满意呢?
要几个参数就加几个大括号,{id}/{date},在页面层用“<%$RouteUrl:id=123, date=456%>” 就可以设置多个参数了,
直接用路由url传值,在cs文件中用Page.RouteData.Values["id"]获取id=123
把参数固定可以防止无数据显示的路由,我就是把它固定了存到数据库中,你可以看下http://www.green-batteries.com/products/rechargeable-backup-battery.htm, 改动url后跳传到提示页面了,之前用动态的改了url页面上什么也没有
传递参数不能用session嘛?干嘛要在这里传?
见“重典”的讲解,很详细,百度一下重典MVC