带可选参数的简单默认操作

时间:2013-07-31 08:51:53

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

我正在尝试创建一个带有两个字符串的方法,如果我提供了params,则会被调用。事实证明这对我来说很难。

这是我的控制器,带有测试方法:

public class TestController : ApiController
{
    [HttpGet]
    public string Get(string one, string two )
    {
        return "Testing";
    }
}

我希望这个方法可以在以下网址上找到:

  • url / test /
  • url / test /
  • URL /测试/一个= 1&安培; 2 = 2
  • URL /测试/?一个= 1
  • URL /测试/?2 = 2
  • URL /测试/获取
  • URL /测试/获取一个= 1&安培;二= 2
  • URL /测试/获取?一个= 1
  • URL /测试/获取?2 = 2

我还计划添加POST支持,但我认为这对WebAPI来说很有用,我必须有一个专门的模型类。

我的路线是:

.Routes.MapHttpRoute("Basic", "{controller}/{action}",
            defaults: new { action = "Get" });

我知道我可以设置路线来指定'一个'和'两个'参数,但我的路线定义位于一个中心位置,我还没准备好污染我的全球路线以满足特殊情况一个控制器(然后用于其他一百种方法)。

在我看来,这是一个非常基本的场景 - 这里的模式是什么?

1 个答案:

答案 0 :(得分:1)

您需要在参数上设置默认值以使其可选:

[HttpGet]
public string Get(string one = null, string two = null )
{
    return "Testing";
}