2011-08-12 81 views
0

我有一個公共字符串在我的代碼後面的文件,我打算從JavaScript調用時,我已經準備好了。但是,由於它並不是真的與特定事件相關聯,所以每次頁面加載時都會觸發。我將它設置爲僅當(IsPostBack)觸發,但我使用的控件(出於許多其他原因)是一個輸入類型=按鈕,因此頁面從不真正執行回發,這意味着代碼永遠不會觸發。停止C#代碼執行每次頁面加載

我怎麼有這樣的事情:在我的代碼背後這樣

public string dontExecuteYet() 
{ 
    Do some server side stuff 
    Then redirect on delay 
    return string 
    } 

,它不運行,直到我告訴它?

+1

如果按鈕不回傳,你怎麼告訴SER什麼時候代碼需要運行? – David

+0

from javascript。 – jmease

回答

0

如果您需要訪問代碼,最終(最初的Page_Load後假設),不能你只是這樣做:

if (!Page.IsPostBack) 
{ 
    this.MyPublicString = "Hello World!"; 
} 

而且在你的JavaScript:

var publicString = "<%= this.MyPublicString %>"; 
+0

問題是網頁從不回傳設計。在按鈕上單擊我正在使用一個Web服務,該服務返回一個項目列表,然後將其保存到本地存儲。無論何時我允許頁面也回發按鈕單擊,Web服務始終返回null。只要我停止發佈回來的頁面,一切正常。 – jmease

0

我同意你可以在此使用AJAX,但如果你不需要這是異步,只需使用一個查詢字符串,像這樣:

if(Request.QueryString["execute"] == "yes") 
{ 
    dontExecuteYet(); 
} 

,並在JavaScript中,你只需要爲這個代碼,當按鈕被按下開火:

window.location = "yoursite.com?execute=yes";