1

我有一个需要 3 个参数的控制器

public ActionResult Directives(string MachineName, int ProjectId, int CompanyId)

现在 URL 看起来像这样。

/Project/Directives?projectId=41&MachineName=Apple%20Macbook%20Luft

但是我如何让它看起来像这样。

/Project/Directives/41/AppleMacbookAir/
4

2 回答 2

2

尝试自定义路线:

routes.MapRoute(
     "Project",                                              // Route name
     "{Controller}/{Action}/{projectId}/{machineName}/{companyId}",                           
     new { controller = "Project", action = "Directives", projectId = 0, machineName = "", companyId = 0 }  // Parameter defaults
);

http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-custom-routes-cs

于 2012-05-11T13:06:11.780 回答
1

您可以将 id 作为RedirectToAction()方法的 routeValues 参数的一部分传递。

return RedirectToAction("Action", new { id = 99 });

这将导致重定向到Site/Controller/Action/99.

编辑: 要自定义 url,您必须创建custom route为:

routes.MapRoute(  "Project", // Route name
                   "{controller}/{Action}/{ProjectId}/{MachineName}/{CompanyId}", 
                   new { controller = "Project", 
                         action = "Directives", 
                         ProjectId= 0,
                         MachineName= "",
                         CompanyId = 0 
                       }  // Parameter defaults );

UrlParameter.Optional如果您想要任何参数可选,请使用。跟随 Stephen Walthe 关于ASP.NET MVC 路由的文章

请参考:带参数的 RedirectToAction

于 2012-05-11T13:05:57.107 回答