访问Request.QueryString [foo]为null,但URL显示查询字符串/参数就在那里

时间:2012-02-20 09:38:35

标签: c# asp.net

我通过AJAX调用.aspx脚本。在该脚本中,我试图使用Request.QueryString["i"]从查询字符串中获取值,但它总是返回null,即使我在调试模式下检查Request对象,查询字符串 IS right那里。

出了什么问题&如何从testScript.aspx中检索i参数值?i = 199?

这是我的简单代码:

    public partial class getData : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            short index = System.Convert.ToInt16(Request.QueryString["i"]);  // BREAKPOINT
        }
    }

当我使用断点时&检查请求对象我可以看到Request.QueryString变量为空(只有{}}。 Request.QueryString["i"]为空。

如果您查看以下img,您可以看到表单包含我的i参数(这就是我的查询字符串.aspx?i=4

enter image description here

3 个答案:

答案 0 :(得分:8)

您的表单是使用 POST 请求发送的,参数 i 不在QueryString中,但在使用多部分表单数据格式的请求正文编码中,Request.QueryString仅显示通过URI传递的参数,如page.asax?i = 4。使用Request.Form["i"]

答案 1 :(得分:1)

我认为您可能会将查询字符串与表单字段混淆。在屏幕截图中,您的值“i”显然位于Form属性。

表单字段是页面上的POSTed字段,而不是显示在url末尾的查询字符串项。

如果你看QueryString财产,我怀疑你找不到你的物品。

尝试使用:

Request.Form["i"]

答案 2 :(得分:0)

你好Jake你用post方法,并且在post方法查询字符串不起作用,所以你必须使用get方法来使用查询字符串或者如果你使用post方法然后在testScript.aspx load event中更改你的代码< strong> Request.QueryString to Request.Form 喜欢这个

public partial class getData : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        short index = System.Convert.ToInt16(Request.Form["i"]);  // BREAKPOINT
    }
}