ASP.NET MVC中这个URL该怎么设置路由
比如说,我需要匹配一个URL为:http://www.abc.com/archive/demo.html对应的controller为Archive,action为Inde...
比如说,我需要匹配一个URL为:
http://www.abc.com/archive/demo.html
对应的controller为Archive,action为Index,“demo”为参数值,那么我这样写
routes.MapRoute(
"aa",
"archive/{url}.html",
new { controller="Archive",action="Index",url=UrlParameter.Optional}
);
是否可以,然后在controller中Index方法中怎么获得这个参数呢?
-----------------------------------------------------------------------------------
PS:如果我要传递多个参数呢,例如http://www.abc.com/{id}/{date}
----------------------------------------------------------------------------------- 展开
http://www.abc.com/archive/demo.html
对应的controller为Archive,action为Index,“demo”为参数值,那么我这样写
routes.MapRoute(
"aa",
"archive/{url}.html",
new { controller="Archive",action="Index",url=UrlParameter.Optional}
);
是否可以,然后在controller中Index方法中怎么获得这个参数呢?
-----------------------------------------------------------------------------------
PS:如果我要传递多个参数呢,例如http://www.abc.com/{id}/{date}
----------------------------------------------------------------------------------- 展开
5个回答
展开全部
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访问的模式,你不可能在路由里面把参数格式化,如果你都把参数固定了,那项目中的其他页面访问参数不就有问题了。
"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访问的模式,你不可能在路由里面把参数格式化,如果你都把参数固定了,那项目中的其他页面访问参数不就有问题了。
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
展开全部
楼主并没有理解错路由机制,只是他不想让别人看见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,就不用写路由,不知回答是否满意呢?
请求: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页面上什么也没有
直接用路由url传值,在cs文件中用Page.RouteData.Values["id"]获取id=123
把参数固定可以防止无数据显示的路由,我就是把它固定了存到数据库中,你可以看下http://www.green-batteries.com/products/rechargeable-backup-battery.htm, 改动url后跳传到提示页面了,之前用动态的改了url页面上什么也没有
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
传递参数不能用session嘛?干嘛要在这里传?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
见“重典”的讲解,很详细,百度一下重典MVC
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询