我创建了一个mvc4应用程序,我需要一个questionmark作为动作/参数分隔符。此参数是可选的。
www.mydomain.com?myParam
config.Routes.MapHttpRoute(
"DefaultRoute",
routeTemplate: "{controller}/{action}?{*param}",
defaults: new { controller = "Index", action = "Index", param = UrlParameter.Optional }
);
路线应如何实现这一目标?
答案 0 :(得分:4)
您可以像往常一样构建您的网址(params用?和&分隔)。如果您定义由斜杠分隔的任何参数,则意味着您希望您的URL看起来更容易理解。
如果您希望您的网址采用标准方式,请删除param
定义:
config.Routes.MapHttpRoute(
"DefaultRoute",
routeTemplate: "{controller}/{action}",
defaults: new { controller = "Index", action = "Index"}
);
现在您可以添加任意数量的参数 例如,您的网址可能如下所示:
Index/Index?param1=something¶m2=something etc
更新:
public class IndexController : ApiController
{
[HttpGet]
public IEnumerable<MyClass> Index(DateTime startDate, DateTime endDate)
{
IEnumerable<MyClass> data = GetSomeData(startDate, endDate);
return data;
}
}
使用上面指定的路由您可以写:
Index/Index?startDate=something&endDate=something
将使用这些参数调用该方法。