簡體   English   中英

如何從asp.net中的靜態方法訪問Page對象

[英]How to access Page object from Static method in asp.net

我有一個網站,其中有一個下拉列表,我需要顯示從下拉列表中選擇的軟件包的價格,因為我在頁面上列出了很多產品,每個人都有該軟件包的下拉列表

我不想對軟件包的每個選擇都進行回發。 所以我想使用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;
}

現在我的問題是我無法找到轉發器控件,因為該函數是靜態的,並且我無法訪問頁面對象來查找轉發器控件。

誰能告訴我如何使用靜態方法訪問轉發器控件?

我很確定您沒有Page對象或其控件。 您的“當前處理程序”是ajax請求。

如果必須這樣做,則應使用AjaxPanel控件創建一個完整的頁面周期,這意味着頁面加載和所有內容,然后使用AjaxPanel的方法,但客戶端本身會感覺到變化,就好像它只是一個ajax請求一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM