2012-10-05 64 views
1

嘿,我正在從PHP設計的網站在ASP.net中設計一個網站。他們通過JavaScript進行形式檢查,然後通過Ajax提交所有數據(如果它通過驗證)。ASP.net調用javascript然後返回一個值到後面的代碼

是否有可能通過後面的代碼斷火從一個提交按鈕一段JavaScript和我處理要麼回發來保存數據,或者什麼也不做,直到用戶修正由指定的字段前讀取返回值JavaScript的?

+0

是的,這樣的確是可能的。 – asawyer

回答

1

如果你正在做的JavaScript驗證,我會做,如果驗證通過一個隱藏的提交按鈕,得到由JavaScript按鈕點擊:

<input type="button" value="validate" onclick="Validate()" /> 

<asp:Button ID="aspButton" class="aspButton" OnClick="CodeBehindMethod" style="display: none;" /> 


<script> 
function Validate() { 
    //if validation passes 
    $(".aspButton").click(); //This is the reason for the class on this button, since      
          //asp buttons have huge long stupid id names 
    //else do some kind of error notification 
} 

</script> 

如果你在代碼驗證的背後,又何嘗不是隻需使用提交按鈕回發?

+0

這真是個好主意!我將嘗試這一個。 – StealthRT

1

在.NET中按鈕控件有一個onClientClick,您可以在其中輸入任何js函數或代碼。謹慎的話,加上返回false;在所述代碼之後,否則.net將發射完整的回發。

這可能是hacky,但你可以考慮使用更新面板來做到這一點;只是一個想法。

1

是的。您可以通過多種方式來做到這一點。我更喜歡handlers,因爲它們超輕量。雖然,對於你來說,拖動他們的Javascript並使用.NET的驗證器可能會少一些工作。這裏有一個例子處理程序雖然以防萬一:

public class CheckData : IHttpHandler 
{ 
    public bool IsReusable 
    { 
     get { return false; } 
    } 
    public void ProcessRequest(HttpContext context) 
    { 
     string sInputData = context.Request["input_post_var"]; 
     context.Response.ContentType = "text/plain"; 
     if (!String.IsNullOrEmpty(sInputData)) 
      context.Response.Write("1"); 
     else 
      context.Response.Write("0"); 
    } 
} 

您可以通過右鍵點擊你的解決方案的文件夾的其中之一,添加新項...,找到通用處理器。

你也可以使用AJAX.NET,但實際上整個框架非常臃腫,如果可以的話,我會避免它。儘管如此,這只是首選。

相關問題