谁能帮忙看一下下面这段代码是什么意思啊?最好能细致到每一条语句,非常感谢。protected string GetRequestValue(string parameterName)
{
Type requestType = Request.GetType();
PropertyInfo  itemProperty = requestType.GetProperty("Item"); object[] paraName = new object[1];
paraName.SetValue(parameterName,0);        string paraValue = itemProperty.GetValue(Request,paraName) as string;
return paraValue;
}

解决方案 »

  1.   

    protected string GetRequestValue(string parameterName)
    {
    Type requestType = Request.GetType(); //拿到Request的类型
    PropertyInfo  itemProperty = requestType.GetProperty("Item"); //通过反射拿到Request类型的名为Item的属性object[] paraName = new object[1];
    paraName.SetValue(parameterName,0);//构建一个object[]对象,用于下面的代码        string paraValue = itemProperty.GetValue(Request,paraName) as string; //通过反射拿到Request的Item属性以paraName为参数的值
    return paraValue;
    }这样的反射用法效率是非常低的,其实直接可以通过斜面的代码实现同样的功能
    protected string GetRequestValue(string parameterName)
    {
       return Request.Item[parameterName] as string;
    }
      

  2.   

    ls正解估计这段代码是拿来做防sql注入检测用的,不过没看到相关的检测代码
      

  3.   

    那其实我还有个问题就是比如说我URL地址中这样的一个串http://localhost/test/test.aspx?Target_Type=APPROVE_POPUP&From_System=FlowER&FORM_APPROVER_ID=BQY.FMAP.4158&FORM_KIND=BAS.FORM.1&FORM_NO=259&Verify_ID=BQY.EMP.1111112157&Caller_ID=BQY.EMP.1111112157&Source_Site=LOCAL&Logon_ID=BQY.EMP.1111112157
    如果这时我去调用以上的函数,即GetRequestValue("Continue_Approve")按道理说是不是应该返回null或空呢?但是它却能返回一个值Y,请问这是什么原因呢?
      

  4.   

    request.item对象,实际不光包含get过来的参数,也包括从 Cookies、Form、ServerVariables 中的参数。所以你取到了非QueryString的参数一点都不奇怪
      

  5.   

    那麻烦请问如何写能够能够单纯的的获得QueryString中的值,
    但不通过Request.QueryString这种方式?
      

  6.   

    多谢大家的帮忙,原因得到“Y"是因为读到Cookies里面的值,
    嘿嘿,已经采取了一种折中的办法就是在QueryString中写了一个跟Cookies中不一样的名字即可,麻烦大家了。
    可以结帖了,谢谢各位。
      

  7.   

    多谢大家的帮忙,原因得到“Y"是因为读到Cookies里面的值,
    嘿嘿,已经采取了一种折中的办法就是在QueryString中写了一个跟Cookies中不一样的名字即可,麻烦大家了。
    可以结帖了,谢谢各位。