MVC4?(问号)作为/(斜线)表示操作/参数分隔符



我创建了一个mvc4应用程序,需要一个问号作为操作/参数分隔符。此参数是可选的。

www.mydomain.com?myParam

config.Routes.MapHttpRoute(
  "DefaultRoute",
   routeTemplate: "{controller}/{action}?{*param}",
   defaults: new { controller = "Index", action = "Index", param = UrlParameter.Optional }
);

实现这一目标的路线应该是什么样子的?

您可以像往常一样构建URL(参数用?和&分隔)。如果你定义了任何用斜线分隔的参数,这意味着你希望你的URL看起来更容易理解。

如果你想让你的URL以标准的方式,只需删除param定义:

config.Routes.MapHttpRoute(
"DefaultRoute",
routeTemplate: "{controller}/{action}",
defaults: new { controller = "Index", action = "Index"}
);

现在您可以添加任意数量的参数
例如,您的URL可能看起来像:

Index/Index?param1=something&param2=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

该方法将使用这些参数调用。

最新更新