none
请大侠帮我看看这代码,是网页代码,具体意思是要带什么参数呢? RRS feed

  • 问题

  • 请大侠帮我看看这代码,是网页代码,具体意思是要带什么参数呢?

    ================================================

    <%@ Page language="c#" %>
    <%@ Import namespace="System.Xml" %>
    <%
        Page.Response.Cache.SetExpires(DateTime.Now.AddHours(-1));


        string t=getParam("t");
        string a=getParam("a");
        string p=getParam("p");

        if (t=="" || a=="" || p=="")
        {
            Response.Write("<?xml version=\"1.0\"?>\n<d>ERROR</d>");
        }
        else
        {
            int pos = Convert.ToInt32(p);

            XmlDocument doc = new XmlDocument();
            string file = Server.MapPath("../advert/xmldata/stat.xml");
            doc.Load(file);

            XmlNode dtnode = doc.SelectSingleNode("/_8bo8/d");
            DateTime dt = Convert.ToDateTime(dtnode.InnerText);
            if ( DateTime.Now.AddHours(-24)>dt )
            {
                string tmp = "<?xml version=\"1.0\" encoding=\"gb2312\"?>\n";
                tmp += "<_8bo8><d>" + DateTime.Now.ToString("yyyy-MM-dd 00:00:00") + "</d>\n";
                tmp += "<f><left></left><right></right><top></top><middle></middle><bottom></bottom><fleft></fleft><fright></fright></f>\n";
                tmp += "<b><left></left><right></right><top></top><middle></middle><bottom></bottom><fleft></fleft><fright></fright></b>\n";
                tmp += "</_8bo8>";
                doc.LoadXml(tmp);
            }

            XmlNode node = doc.SelectSingleNode("/_8bo8/" + t + "/" + a);

            string data=node.InnerText;

            data = Record(data, pos);
            node.InnerText = data;
            doc.Save(file);

            Response.Write("<?xml version=\"1.0\"?>\n<d>OK</d>");
        }
    %>
    <script language="c#" runat="server">
    string Record(string data, int pos)
    {
        if (data=="") data = "0";
        string[] arr = data.Split(',');
        if (pos<arr.Length)
        {
            arr[pos] = (Convert.ToInt32(arr[pos]) + 1).ToString();
            data = arr[0];
            for(int i=1; i<arr.Length; i++)
            {
                data += "," + arr[i];
            }
        }
        else
        {
            string[] arr2 = new string[pos+1];
            for(int i=0; i<arr.Length; i++)
            {
                arr2[i] = arr[i];
            }
            for(int i=arr.Length; i<arr2.Length; i++)
            {
                arr2[i]="0";
            }
            arr2[pos] = (Convert.ToInt32(arr2[pos]) + 1).ToString();
            data = arr2[0];
            for(int i=1; i<arr2.Length; i++)
            {
                data += "," + arr2[i];
            }
        }
        return data;
    }
    string getParam(string key)
    {
        string tmp="";
        if (Request[key]!=null)
        {
            tmp = Request[key].ToString();
        }
        return tmp;
    }
    </script>

    2011年11月28日 7:27

答案

  • 请具体列出“getParam”的方法实现。

    我认为你类似Request.QueryString("a");因此解决方案很可能是——

    请保证当前页面的地址后面带有t或者a或者p,比如(假设你的页面是a.aspx)——

    a.aspx?t=a&a=b&p=b


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月28日 8:24
    版主
  • 请具体列出“getParam”的方法实现。

    楼主应该有提供了

    string getParam(string key)

    {

    string tmp="";

    if (Request[key]!=null)

    { tmp = Request[key].ToString(); }

    return tmp;

    }

     

    因为用Request[key]来取值,所以有可能要带QueryString或表单变量

    QueryString的話:请参考二楼写法

    表单变量:

    <input type="hidden" name="t" value="a" />

    <input type="hidden" name="a" value="b" />

    <input type="hidden" name="p" value="b" />


    Shadowと愉快なコード達
    2011年11月28日 14:22
  • Hi asp菜鸟,

    这里样例代码中使用的是Request[string paraName]方式来获取其他页面传过来的参数, 则有两种可能:
    1. Get方式传过来的参数, 在跳转到新页面时这些参数直接附加在新页面url之后, 或者get方式提交的form表单在提交时会自动将form中的数据集以相同的形式附加在url之后, 形式如同Wei_Dong所述.
    另外一种获取这种参数的写法是Request.QueryString[string paraName].
    2. Post方式传过来的参数, 这些参数是通过原页面表单post方式提交传过来的, 一个例子如Shadow所述, 注意这些input field须都在form中.
    另外一种获取这种参数的写法是Request.Form[string paraName].

    总之这两种方式传递的参数都可以用Request[string paraName]来获取, 注意是方括号, 圆括号是VB.NET中的写法.

    祝你快乐每一天,


    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    2011年11月29日 3:02
    版主

全部回复

  • 请具体列出“getParam”的方法实现。

    我认为你类似Request.QueryString("a");因此解决方案很可能是——

    请保证当前页面的地址后面带有t或者a或者p,比如(假设你的页面是a.aspx)——

    a.aspx?t=a&a=b&p=b


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月28日 8:24
    版主
  • 请具体列出“getParam”的方法实现。

    楼主应该有提供了

    string getParam(string key)

    {

    string tmp="";

    if (Request[key]!=null)

    { tmp = Request[key].ToString(); }

    return tmp;

    }

     

    因为用Request[key]来取值,所以有可能要带QueryString或表单变量

    QueryString的話:请参考二楼写法

    表单变量:

    <input type="hidden" name="t" value="a" />

    <input type="hidden" name="a" value="b" />

    <input type="hidden" name="p" value="b" />


    Shadowと愉快なコード達
    2011年11月28日 14:22
  • a.aspx?t=a

    还有一种是Request.Form("t");

     

    不过我一般还是用一楼的方法.


    GetZ 不抛弃,不放弃.
    • 已建议为答案 zongTest 2011年12月30日 15:46
    2011年11月28日 14:48
  • Hi asp菜鸟,

    这里样例代码中使用的是Request[string paraName]方式来获取其他页面传过来的参数, 则有两种可能:
    1. Get方式传过来的参数, 在跳转到新页面时这些参数直接附加在新页面url之后, 或者get方式提交的form表单在提交时会自动将form中的数据集以相同的形式附加在url之后, 形式如同Wei_Dong所述.
    另外一种获取这种参数的写法是Request.QueryString[string paraName].
    2. Post方式传过来的参数, 这些参数是通过原页面表单post方式提交传过来的, 一个例子如Shadow所述, 注意这些input field须都在form中.
    另外一种获取这种参数的写法是Request.Form[string paraName].

    总之这两种方式传递的参数都可以用Request[string paraName]来获取, 注意是方括号, 圆括号是VB.NET中的写法.

    祝你快乐每一天,


    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    2011年11月29日 3:02
    版主