MVC-如何从get请求获取参数值,该请求具有包括点字符的参数名称

时间:2014-02-17 15:12:23

标签: asp.net-mvc url parameters get asp.net-mvc-routing

在MVC中,我知道我们可以从get请求中获取参数:

请求:

http://www.example.com/method?param1=good&param2=bad

在控制器中

public ActionResult method(string param1, string param2)
{
   ....
}

但在我的情况下,外部网站向我发送了一个获取请求,例如:

http://www.example.com/method?param.1=good&param.2=bad

当我尝试满足此请求时,在控制器中,如下所示:

public ActionResult method(string param.1, string param.2)
{
   ....
}

由于变量名中的点,我得到构建错误。我怎样才能获得这些参数?不幸的是,我不能要求他们更改参数名称。

3 个答案:

答案 0 :(得分:39)

使用以下代码:

    public ActionResult method()
    {
        string param1 = this.Request.QueryString["param.1"];
        string param2 = this.Request.QueryString["param.2"];

        ...
    }

答案 1 :(得分:14)

这可能是你最好的选择:

/// <summary>
/// <paramref name="param.1"/>
/// </summary>
public void Test1()
{
    var value = HttpContext.Request.Params.Get("param.1");
}

HttpContext.Request.Params获取参数,而不是将其作为显式参数

答案 2 :(得分:0)

The Framework
  public void ProcessRequest(HttpContext context)
  {
     string param1 = context.Request.Params["param.1"];

替换为 .net核心3.1

ControllerBase 
  ...
    [ApiController]
    [Route("[controller]")]
   ...

     string param1 = HttpContext.Request.Query["param.1"];
     string param2 = HttpContext.Request.Query["param.2"];