2009-05-13 10 views
2

jqueryでいくつかのクライアント側の検証を行い、asp.netコントロールのポストバックイベントを手動で実行する方法を知っている人がいるのだろうか?ここでMasterpageのポストバックイベントの前にバリデーションを行うAsp.net

は、サンプルのマスターページ は、制御lnkbtnSaveはとてもマスターページにある

protected void Page_Load(object sender, EventArgs e) 
{ 
     Master.MenuButton += new Form.MasterPageMenuClickHandler(Master_MenuButton); 
} 

void Master_MenuButton(object sender, EventArgs e) 
    { 
     switch (Master.CurrentButton) 
     { 
      case "Save": 
       Save(); 
       break; 
      case "New": 
       Response.Redirect("ContentPage.aspx"); 
       break; 
      default: 
       break; 
     } 
    } 

後ろ

public delegate void MasterPageMenuClickHandler(object sender, System.EventArgs e); 
    public event MasterPageMenuClickHandler MenuButton; 

    protected void lnkbtnSave_Click(object sender, EventArgs e) 
    { 
     // Assign value to public property 
     _currentButton = "Save"; 

     // Fire event to existing delegates 
     OnMenuButton(e); 
    } 

    protected virtual void OnMenuButton(EventArgs e) 
    { 
     if (MenuButton != null) 
     { 
      //Invokes the delegates. 
      MenuButton(this, e); 
     } 
    } 

コンテンツページのコードの後ろにマスターページコード

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#<%=lnkbtnSave.ClientID %>").click(function() { 
     alert("hello"); 
     // Do some validation 
     // If validation Passes then post back to lnkbtnSave_Click Server side Event 
     }); 
}); 
</script> 
<asp:LinkButton ID="lnkbtnSave" runat="server" onclick="lnkbtnSave_Click" ><asp:Image ID="Image3" runat="server" ImageUrl="~/images/save.gif" AlternateText="Save" />Save</asp:LinkButton> 

IEのどのように私は各コンテンツPA以来の私はどのコンテンツページを決定するgeには、それを検証するための独自のコントロールがあります。あなたは逆にそれを見れば、それは簡単にすることができ任意のヘルプ

答えて

2

最初の質問では、リンクバックをポストバックにするにはtrueを返し、停止するにはfalseを返す必要があります。

あなたの2番目の質問については
$(document).ready(function() {  
    $("#<%=lnkbtnSave.ClientID %>").click(function() {   
     alert("hello");   
     var isValid = false; 
     // Do some validation 
     return isValid; 
    }); 
}); 

、各ページには妥当性を判断するためにそれを使用する検証スクリプトの独自のバージョンを追加し、マスターページに機能を持っているかもしれない:

マスターページ:

$(document).ready(function() {  
    $("#<%=lnkbtnSave.ClientID %>").click(function() {     
     return pageIsValid(); 
    }); 
});  

コンテンツページ:

function pageIsValid() { 
     var isValid = false; 
     //validation logic 
     return isValid; 
    } 
+0

ありがとうジミー!私はあなたがそれを行うことができることを知らなかった。 – zSynopsis

4

ため

感謝。検証を行い、ポストバックを開始する代わりに、必要に応じてポストバックを検証して防止することができます。

$('#<%= lnkbtnSave.ClientID %>').click(function(e) { 
    if (!validate()) { 
     e.preventDefault(); //will stop the page from posting back. 
    } 
}); 

あなたは本当にあなたが明示的にASP.NETは、あなたの検証を行った後、あなたのためのページに置きます__doPostBack()関数を呼び出すことができポストバックを開始する(そしてそれを他の方法を行う)する必要がある場合。

// This does the exact same thing as above, but it explicitly calls __doPostBack 
// If you use the above code __doPostBack will be called automatically for you. 
$('#<%= lnkbtnSave.ClientID %>').click(function(e) { 
    if (validate()) { 
     __doPostBack('<%= lnkbtnSave.ClientID %>',''); 
    } 
    e.preventDefault(); 
}); 

これが明確になる必要があるかどうかを教えてください。

+0

ありがとう、私はこれを試してみましょう! – zSynopsis

2

はあなただけを使用することができますのコントロールで、ClientValidationFunctionプロパティを設定します。

関連する問題