使用附加参数路由配置质询

时间:2017-02-14 08:09:59

标签: c# asp.net-mvc routes

我对Web Api中的路由配置有一个非常简单的问题。

我的目标是将两种方法合并为一种。

http://nsa/wordpress/?page_id=16&cf_id=17

上面粘贴的代码有效。

当然,我已经阅读了一些关于自定义路线的教程,但是我没有成功。字符串元素是可选的。

这是我在RouteConfig中尝试过的:

[HttpGet]
[Route("foo/bar")]
public HttpResponseMessage TestMethod()
{
    //TODO: Implement
    return new HttpResponseMessage(HttpStatusCode.OK);
}



[HttpGet]
[Route("foo/bar/{element}")]
public HttpResponseMessage AnotherTestMethod(string element)
{
    //TODO: Implement
    return new HttpResponseMessage(HttpStatusCode.OK);
}

感谢您提供任何提示或帮助。

2 个答案:

答案 0 :(得分:1)

您可以为element指定默认值。并且在route参数中将变量声明为可为空。这会将参数视为可选参数。

[Route("foo/bar/{element?}")]
public HttpResponseMessage TestMethod(string element = null)

答案 1 :(得分:0)

为什么不使用以下一种方法。

[HttpGet]
[Route("foo/bar/{string element}")]
public HttpResponseMessage TestMethod(string element)
{
//TODO: Implement
return new HttpResponseMessage(HttpStatusCode.OK);
}

如您所知,无论是否设置了元素的参数,都将调用TestMethod()。