如何使用ASP.NET MVC路由设置RESTFul URL?

时间:2011-03-08 12:50:41

标签: asp.net-mvc asp.net-mvc-routing

我有这个网址:

/controller/action/value

和这个动作:

public ActionResult Get(string configName,string addParams)
{
}

如何设置路由表以使路由引擎将值绑定到configName控制器中任何操作的Config参数?

3 个答案:

答案 0 :(得分:5)

嗯,首先,这是不完整的。您没有方法名称。

其次,这已经适用于以下格式的网址:

/控制器/动作CONFIGNAME = FOO&安培; addparams =酒吧

以下是如何使用漂亮的路线:

routes.MapRoute(
      "YourMapping",                                            
      "{controller}/{action}/{configName}/{addParams}");

routes.MapRoute(
      "YourMapping",                                            
      "{controller}/{configName}/{addParams}",     
      new {
          controller = "YourController",
          action = "YourAction"
      },
      new {
          controller = "YourController"  // Constraint
      });

如果您要从网址中排除操作。

答案 1 :(得分:3)

您可以在默认

之上添加新路线
routes.MapRoute(
  "Config", 
  "config/{action}/{configName}/{addParams}",
  new { controller = "Config", action = "Index" }
);

routes.MapRoute(
  "Default", // Route name
  "{controller}/{action}/{id}", // URL with parameters
  new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

允许您使用路线/config/actionName/configName/addParamsValue。您的其他路线不受此影响。

答案 2 :(得分:2)

routes.MapRoute(
      "ValueMapping",                                            
      "config/{action}/{configName}/{addParams}",          
      new { controller = "Config", action = "Index", configName= UrlParameter.Optional, addParams = UrlParameter.Optional }  // Parameter defaults);

将默认控制器设置为Home,默认操作为索引

所以网址: /config/get/configNameValue/AddParamValue

将匹配此方法:

public ActionResult Get(string configName,string addParams)
{
//Do Stuff 
}