将十进制值作为Web API 2 URL中的值传递

时间:2014-02-21 20:10:14

标签: c# asp.net-web-api2 asp.net-web-api-routing

我正在创建一个Web Api(v2.0)方法,需要将十进制值作为参数。

如果我使用以下网址,则会收到404未找到错误:

http://localhost:4627/api/Product/Eligibility/10.5

但如果我对Int参数使用以下URL,则它可以工作:

Http://localhost:4627/api/Product/Eligibility/10

这是api中的两个相应方法:

// GET api/Product/Eligibility/10.0
[Route("api/Product/Eligibility/{amount:decimal}")]
public decimal GetEligibiilty(decimal amount)
{
    return amount;
}

// GET api/Product/Eligibility/10
[Route("api/Product/Eligibility/{amount:int}")]
public decimal GetEligibiilty(int amount)
{
    return amount;
}

史蒂夫

3 个答案:

答案 0 :(得分:37)

通过在网址末尾添加"/"来实现它!

http://localhost:4627/api/Product/Eligibility/10.5/

会找到这个方法:

// GET api/Product/Eligibility/10.5/
[Route("api/Product/Eligibility/{amount:decimal}/")]
public decimal GetEligibiilty(decimal amount)
{
    return amount;
}

史蒂夫

答案 1 :(得分:1)

我最近在Visual Studio 2015中使用Web API时遇到此问题。我通过在URL末尾添加?parameterName = decimalValue 解决了这个问题。在你的情况下可能是这样的:

http://localhost:4627/api/Product/Eligibility?amount=10.5

我希望可以提供帮助。

答案 2 :(得分:0)

在网址中传递小数有一个类似的问题,任何使用asp.net网页的人都是在交易后重定向和变量' amount'中有一个小数:

Response.Redirect(@Href("~/Thankyou", amount + "/"));