2016-12-06 24 views
0

我想要做一些應該很簡單的事情。我發現shortcut.js 並正在使用它來完成請求。當他們按/鍵入CTL-S時,我需要做一個頁面保存。一個正常的odl學校同步電話很好。jquery表單提交的ASP.Net格式:request(txtname)<> txtname.text

[是,CTL-S通常會在HTML頁面保存到一個文件中。]

首先我要解釋這個問題,那麼我將通過細節行走。 這是綁定快捷方式的js代碼片段。只需調用按鈕單擊事件...

shortcut.add("F11", function(){ 
         $('#ctl00$cp1$btnSave').click(); 
         } 
      ); 

在調用快捷方式時,會捕獲擊鍵並觸發保存按鈕。我的代碼被調用。

看來HTTP請求中的FORM值沒有被映射到控制變量。我可能不會說這是正確的...考慮這個: 這裏ctl00 $ cp1 $ txtname是textBox控件的uniqueId。

request('ctl00$cp1$txtname') = "newValue" 
txtname.text = "oldvalue" 

如果我回去,然後點擊按鈕W我的鼠標,同一個按鈕,同樣的形式....

request('ctl00$cp1$txtname') = "newValue" 
txtname.text = "newvalue" 

這是form.load的情況。因此,無論何時這種映射正在發生/未發生,它都處於頁面生命週期的早期階段。 這不是唯一的特定控件。所有的控件遭受同樣的問題。

這裏是在設計時SAVE按鈕

<asp:Button ID="btnSave" runat="server" 
     Text="Save" class="submit" CssClass="buttonblue" UseSubmitBehavior="false" /> 

這裏是個什麼樣子,當它被渲染

<input type="button" name="ctl00$cp1$btnSave" value="Save" onclick="javascript:__doPostBack('ctl00$cp1$btnSave','')" id="ctl00_cp1_btnSave" class="buttonblue"> 

我注意到像在思考的DOM級別,點擊鼠標應該消防__doPostBack。沒有更多,不少。所以我更改快捷方式代碼做同樣的

shortcut.add("F11", function(){ 
         __doPostBack('ctl00$cp1$btnSave', ''); 
         } 
      ); 

這不能解決問題。 再次,這是客戶端的東西,沒有什麼真正棘手的事情。一看頁面的源代碼顯示__doPostBack呈現這樣

var theForm = document.forms['aspnetForm']; 
if (!theForm) { 
    theForm = document.aspnetForm; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 

雖然我在這,我也嘗試

shortcut.add("F11", function(){ 
         $('#aspnetForm').submit(); 
         } 
      ); 

這也不能解決問題。

我不想做任何聰明,甚至是異步的事情,我只想通過JS提交表單。

我的主要問題是:爲什麼asp.net的行爲不如我預期的那樣。 具體而言,它爲什麼不將request.form值映射到控制變量。

我會認爲 a)點擊按鈕 b)調用(#btn)。點擊() c)調用__doPostback(與點擊將使用完全相同的參數)

將產生相同的結果。

我沒有理解這裏的東西。

一個有趣的數據點是,我得到通過調用(「#form」)同樣不受歡迎的行爲。提交()

回答

0

Telerik的控件radTextBox不知何故與asp.net程序干擾。通過用常規文本框替換它們,我能夠獲得所需的行爲。

這已經刺激了我數週的時間。