2014-02-21 150 views
0

我想在我的asp.net項目中使用頁面方法,但我不知道它爲什麼不工作。頁面方法不工作

基本上我有2頁:locations.aspx和details.aspx。

在locations.aspx中,當我點擊一個圖像時,運行一個調用頁面方法的JS函數。然後在該頁面方法中,我存儲了一個會話值,我在Details.aspx頁面中使用該值。由於某種原因頁面方法失敗,我得到一個警報(我已經在onFailed()方法中設置了一個警報)。請告訴我是否有任何問題或者我應該採取任何程序。

我已經測試:

  1. onclick事件正在發生。
  2. 如果我手動爲session變量賦值,那麼它在Details.aspx頁面中工作。

Location.aspx

<form id="form1" runat="server"> 

      <img class="..." src="...." usemap="#panchagarh-map" /> 
       <map name="panchagarh-map"> 
        <area onclick="javascript:passLocationString('Panchagarh')" href="Details.aspx" class="...." coords=" .... " shape="poly" 
       </map> 



     <script language="javascript" type="text/javascript"> 
      function passLocationString(locationString) { 
       PageMethods.setLocationString(locationString, onSucceeded, onFailed); 
      } 
      function onSucceeded(result, userContext, methodName) { 
      } 
      function onFailed(error, userContext, methodName) { 
       alert("An error occurred") 
      } 
     </script> 

     <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> 
     </asp:ScriptManager> 
    </form> 

Location.aspx.cs

public partial class Locations : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 

     [System.Web.Services.WebMethod(EnableSession = true)] 
     public static void setLocationString(string temp) 
     { 
      HttpContext.Current.Session["locationString"] = temp; 
     } 
    } 

Details.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    HtmlGenericControl parentDiv = new HtmlGenericControl("DIV"); 
    parentDiv.ID = "test"; 
    parentDiv.InnerHtml = (string)Session["locationString"]; 

    parentDiv.Visible = true; 
    Panel.Controls.Add(parentDiv); 
} 
+0

爲什麼不:'alert(「發生錯誤:」+ error);'? – Igor

+0

我做到了,它說「發生了一個錯誤[對象對象]」..我不明白它.. –

回答

0

這將很高興地看到錯誤的文本雖然。我會建議嘗試使用Web服務,而不是頁面方法,看看它是否工作。另一個想法是檢查會話在Web.config中是否正確配置:

configuration> 
<system.web> 
    <sessionState mode="InProc"/> 
</system.web> 
</configuration> 
+0

是的,它被正確配置.. –

+0

所以我仍然沒有得到什麼問題是..頁面方法不接受從javascript頁面方法的參數。因此,我發現了一種不同的方式..我用querry字符串將信息從Locations.aspx傳遞給Details.aspx。關於querry字符串的 : http://msdn.microsoft.com/zh-cn/ -us /庫/ 6c3yckfw(v = VS.100)的.aspx –