我有控制器/动作:
public partial class MyControllerController : Controller {
public virtual ActionResult Index(string name, string category, DateTime? from = null, DateTime? to = null)
{
// ...
}
}
我希望我的网址看起来像这样:
/MyController/myname/mycategory
/MyController/myname/mycategory?from=10%2F01%2F2013%2000%3A00%3A00&to=10%2F31%2F2013%2023%3A59%3A59
我尝试过以下路线注册:
routes.MapRoute(
"MyRoutes",
"MyController/{name}/{category}/",
new
{
controller = "MyController",
action = "Index",
from = UrlParameter.Optional,
to = UrlParameter.Optional
});
它接受传入的URL,但在使用Url.Action()
方法时它不会生成正确的出站URL。我的Url.Action()
始终返回地址,如:
/CouponManager?name=myname&category=mycategory&from=08%2F01%2F2013%2000%3A00%3A00&to=08%2F31%2F2013%2023%3A59%3A59
有人可以帮忙吗?
答案 0 :(得分:1)
使用Url.RouteUrl
。例如:
Url.RouteUrl("MyRoutes", new { name = "myname", category = "mycategory" })
或者
Url.RouterUrl("MyRoutes", new { name = "myname", category = "mycategory", from = fromDate, to = toDate })
此外,从路径定义中删除和删除它,使其如下所示:
routes.MapRoute(
"MyRoutes",
"MyController/{name}/{category}/",
new
{
controller = "MyController",
action = "Index"
});
您可以选择在路线中列出名称和类别作为可选参数,或者为它们指定默认值,但除非您将它们用作网址路径的一部分而不是查询字符串,否则它们不属于那里。 / p>
答案 1 :(得分:0)
如果你想让你的网址像/ MyController / myname / Category?..,你应该在我的控制器中使用我的名字的一个动作来获取Catagory的参数。