2009-09-23 58 views
3

我試圖通過jQuery觸發表單提交,並有一個特定的服務器端事件觸發。從jQuery啓動服務器端事件 - __EVENTARGUMENT不存在

客戶端代碼:

$("input[name=__EVENTARGUMENT]").val("SomeArg"); 
form = $("body form"); 
form.submit(); 

服務器端代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Page.IsPostBack) 
     { 
      if (Request["__EVENTARGUMENT"] == "SomeArg") 
      { 
       //do some stuff 
      } 
     } 
    } 

的問題是,在 「__EVENTARGUMENT」 隱藏輸入不存在。我發現如果我添加一個autofostback = true的ASP.net服務器控件下拉列表,EVENTARGUMENT隱藏輸入被創建。有沒有一種更清潔的方式讓ASP.net創建這些隱藏的輸入,並允許我在沒有添加控件的情況下獲取它們的值服務器端,我實際上並不需要在頁面上?

回答

2

添加asp.net HiddenField control頁面

但你將有一個問題,就是得到這個控件的ID,這as.net自動生成,您可以使用ClientID屬性爲隱藏字段像解決這個this article mentions

+0

我在頁面上添加了一個'test'HiddenField控件。 EVENTARGUMENT隱藏字段不是自動生成的。由於該javascript /頁面加載代碼實際上是在用戶控件上,因此我很謹慎地使用該名稱創建一個。用戶控件可能放置在具有自動生成的EVENTARGUMENT隱藏字段的頁面或沒有自動生成該控件的頁面上。 – KClough 2009-09-23 21:17:33

+0

爲什麼你需要這個特殊的EVENTARGUMENT? – 2009-09-23 21:24:08

+0

啊!沒有意識到所有命名的輸入字段都可以通過Request對象訪問。謝謝! – KClough 2009-09-23 21:41:28