2011-09-02 66 views
2

我有這麼多回傳和驗證在asp.net和javascript

HTML

<asp:Button ID="btnSaveContest" runat="server" Text="Save &amp; Publish Contest" OnClientClick=" ValidateCreateContest();" ValidationGroup="ContestAdd" OnClick="btnSaveContest_Click" CausesValidation="false"/>

的JavaScript

<script type="text/javascript"> 
    function ValidateCreateContest() { 
     Page_ClientValidate(); 
     if (Page_IsValid) { 
      alert('page is valid'); 
      $('#<%=btnSaveContest.ClientID%>').attr('disabled', 'disabled'); 
      __doPostBack('<%=btnSaveContest.ClientID%>', '') 
      return true; 
     } 
     else { 
      alert('not valid');  
      return false; 
     }  

    } 
</script> 

它不回發到網頁,但它不會去服務器端功能btnSaveContest_Click。爲什麼?

+0

我有一些麻煩做類似的事情。我發現的一個解決方案是:'OnClientClick =「ValidateCreateContest(); return isFormValid;'',然後在'ValidateCreateContest();'函數中根據需要做'isFormValid = true','isFormValid = false','isFormValid 「是一個全球變量。 – Oliver

+0

@Oliver: - 它做了回發,但它沒有去btnSaveContest_Click函數...... ??? – Rauf

+0

首先使用錯誤控制檯檢查頁面中是否有任何javascript錯誤。 如果您使用斷點檢查它,然後停止項目做一個乾淨的生成,然後再次重建並運行該項目看看是否有幫助,如果這不起作用嘗試更改默認瀏覽器。 – Devjosh

回答

4

不要使用ClientID,使用UniqueID

if (Page_IsValid) { 
     alert('page is valid'); 
     $('#<%=btnSaveContest.ClientID%>').attr('disabled', 'disabled'); 
     __doPostBack('<%= btnSaveContest.UniqueID %>', '') 
     return true; 
    } 
    else { 
     alert('not valid');  
     return false; 
    }  

question可能是有用的。

+0

@_onof請你說出ClientId和UniqueId之間的區別。請探索你的答案有點它會幫助OP.Thanks – Devjosh

+0

@Devjosh - http://www.velocityreviews.com/forums/t78409-difference-between- id-clientid-and-uniqueid.html – Rauf

+0

http://stackoverflow.com/questions/1612016/c-asp-net-why-is-there-a-difference-between-clientid-and-uniqueid – onof