2013-04-27 172 views
0

我正在尝试创建自定义路由。这是我尝试过的,但不起作用,我做错了什么?ASP.Net MVC - 创建自定义路由?

预期的调用:

MyWebsite/Friend/Respond/55/4 

routes.MapRoute(
      name : "Friend", 
      url : "Friend/Respond/{id}/{state}" 
); 

// This method is in a Controller Named FriendController 
[HttpPost] 
public ActionResult Respond(int id, int state) 
{ 
    // Do stuff 
} 

答:

routes.MapRoute(
      name : "ExtraParameter", 
      url : "{controller}/{action}/{id}/{state}", 
      defaults : new { } 
); 

回答

2

您可以发布一个例子ActionLink的触发的路线?

有你建立你的路线默认值:

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

特别是在图路线的第三个参数。您可能需要将您的ID和状态参数设置为UrlParameter.Optional

+0

是的,我有默认的路由,这里是预期的链接:MyWebsite /朋友/响应/ 55/4。在没有ActionLink的我从iOS客户端 – aryaxt 2013-04-27 17:26:54

+0

调用这个服务你有没有设置为默认的朋友路线虽然?像这样...'routes.MapRoute( “Friend”, “Friend/Respond/{id}/{state}”, new {controller =“Friend”,action =“Respond”,id = UrlParameter.Optional ,State = UrlParameter.Optional});' – wellers 2013-04-27 17:32:55

+1

不需要设置参数为可选项,但设置“controller,and”action“was。解决了这个问题,谢谢,我希望根据它可以检测到的url,但它不会't – aryaxt 2013-04-27 17:34:19

1

您可以设置ID和状态UrlParameter.Optional。

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}/{state}", 
    new { controller = "yourcontrollername", action = "youraction", id = UrlParameter.Optional, state = UrlParameter.Optional 
    });