将两个十进制值传递给ASP .NET MVC Controller

时间:2016-11-02 16:17:12

标签: asp.net-mvc controller routing

我有一个ASP .NET MVC控制器,它接收两个小数参数:

[HttpGet, Route("stores/{latitude}/{longitude}")]
public void GetStores(decimal latitude, decimal longitude)
{
    ...
}

当我调用此url时,此控制器无法正常工作(404错误):

http://localhost:16959/store/stores/40.5479397/-3.6116505

但是......如果我修改我的控制器,并在路由字符串中添加“/”,我可以正确调用此URL(Postman):

[HttpGet, Route("stores/{latitude}/{longitude}/")]
public void GetStores(decimal latitude, decimal longitude)
{
    ...
}

http://localhost:16959/store/stores/40.5479397/-3.6116505/

现在的问题是 Swagger 无法识别此斜杠“/”并且从未找到控制器。

我的问题是......解决这个问题的更好方法是什么?传递身体要求中的值?在第二个参数中添加斜杠?

2 个答案:

答案 0 :(得分:1)

您是否尝试过传递查询字符串中的值? E.g

http://localhost:16959/store/stores?latitude=40.5479397&longitude=-3.6116505

答案 1 :(得分:0)

您不必使用路线("存储/ {纬度} / {经度} /")或修改网址模板。
只需使用<input>名称,然后提交为URL查询字符串

<input Name="Latt" Type="Text" placeholder="Lattitude">
<input Name="Lang" Type="Text" placeholder="LAngitude">
<input  Type="Submit" >

在开始表单中使用上面的代码

如果控制器输入规范有任何问题,请使用如下

Public ActionResult Login (String Latt,String Long)
{
  decimal latt = (decimal)Latt;
  decimal long = (decimal)Long;
  (put your code here)

  }