如何从asp.net中的Static方法访问Page对象

时间:2013-12-15 09:56:45

标签: c# jquery asp.net ajax webmethod

我有一个网站,其中我有一个下拉列表,我需要显示从下拉列表中选择的包的价格,因为我在页面上列出了很多产品,每个人都有包下拉列表

我不想对每个选择的包进行回发。所以我想用AJax jQuery实现,我使用转发器控件来显示产品列表。

以下是我正在使用的webmethod函数:

[System.Web.Services.WebMethod]
    public static String FillLabel(int Index)
    {
    Page pa = HttpContext.Current.CurrentHandler as Page;
            Repeater homeRepeater = pa.FindControl("rptProducts") as Repeater;
         DropDownList drpUnit = homeRepeater.FindControl("drpQuantity") as DropDownList;
                 int Unit = int.Parse(drpUnit.SelectedItem.Text.Split(' ')[0].Trim());
                 HiddenField productId = (homeRepeater.Items[Index].FindControl("hdProductId") as HiddenField);
                 Package objPackage = new Package();
                 objPackage.ProductId = Convert.ToInt32(productId.Value);
                 objPackage.TownId = Globals.DefaultTown;
                 Label mrp = (homeRepeater.Items[Index].FindControl("lblMRP") as Label);
                 Label ourPrice = (homeRepeater.Items[Index].FindControl("lblOurPrice") as Label);
                 Label discount = (homeRepeater.Items[Index].FindControl("lblDiscount") as Label);
                 double discountPercent = Convert.ToDouble(objPackage.GetProductPackages().Find(item => item.Unit == Unit && item.ProductsInfo.ProductID == objPackage.ProductId).Discount);
                 string mrpVal = objPackage.GetProductPackages().Find(item => item.Unit == Unit && item.ProductsInfo.ProductID == objPackage.ProductId).MaximumRetailPrice.ToString();
                 string price = objPackage.GetProductPackages().Find(item => item.Unit == Unit && item.ProductsInfo.ProductID == objPackage.ProductId).SabkaSupermarketPrice.ToString();
                 mrp.Text = mrpVal;
                 ourPrice.Text = price;
                 mrp.Visible = (mrpVal != price);
                 if (discountPercent > 0)
                 {
                     discount.Visible = true;
                     discount.Text = objPackage.GetProductPackages().Find(item => item.Unit == Unit && item.ProductsInfo.ProductID == objPackage.ProductId).Discount.ToString() + "%<br/> OFF";
                 }
                 else
                 {
                     discount.Visible = false;
                 }
       return String.Empty;
}

现在我的问题是我无法找到转发器控件,因为该函数是静态的,我无法访问页面对象以查找转发器控件。

有谁能告诉我如何在静态方法中访问转发器控件?

1 个答案:

答案 0 :(得分:0)

我很确定你没有Page对象,也没有控件。你的“当前处理程序”是一个ajax请求。

如果你必须这样做,那么你应该使用AjaxPanel控件创建一个完整的页面循环,这意味着页面加载和所有内容,然后是你的AjaxPanel的方法,但是客户端本身感觉到一个变化,好像它只是一个ajax请求。 / p>