2011-07-04 12 views
1

私は、検証(サーバー側とクライアント側の両方)を行うテキストボックスが少ないフォームを用意しています。フォームには、「次へ」、「戻る」、「CanceL」のボタンがあります。だから私は、ユーザーが "戻る"または "キャンセル"ボタンをクリックして起動するための検証は必要ありません。どうすればこれを達成できますか? ありがとうございます!条件付きで検証を無効にする


いくつかのサンプル:サーバー側で

<div class="buttons">  
<input type="submit" name="cancelButton" value="" /> 
<input type="submit" name="backButton" value="" /> 
<input type="submit" name="nextButton" value="" /> 
</div> 

<% using (Html.BeginForm()) { %> 
    <p> 

    <table style="width: 200px">  
    <tr><td align="center" colspan=2><%= Html.ValidationMessageFor(m => m.street) %><%= Html.DropDownListFor(m => m.street, Model.streetsList) %></td></tr> 
    <tr><td colspan=2>&nbsp;</td></tr> 
    <tr><td valign="bottom" align="right" style="width: 75px"><%= Html.LabelFor(m => m.flatNumber) %>:</td><td align=left><%= Html.TextBoxFor(m => m.flatNumber, new { maxlength = 6, style = "width: 48px;" })%> <%= Html.ValidationMessageFor(m => m.flatNumber) %></td></tr> 
    </table> 
    <br /> 

     <input type="submit" class="refusal button red floatL" name="cancelButton" value="" /> 
     <input type="submit" class="back button green floatL" name="backButton" value="" /> 
     <input type="submit" class="continue button green floatR marR" name="nextButton" value="" /> 
    </div> 
    <div class="clear"> 
    </div> 
    <% } %> 

私は検証のためにDataAnnotations属性を使用します。

+0

検証はどのように機能しますか? jsと?プラグインを使って?あなたのコードの重要な部分を私たちに見せてくれますか? – JMax

+0

申し訳ありません。私の質問にいくつかのコードサンプルを追加するだけです。ありがとう! – kseen

答えて

3

ButtonクラスにはCausesValidationプロパティがあります。これがfalseに設定されていると、ポストバック時に検証がトリガされません。

例:これはASP.NETのバリデータを無効にすることを

<asp:Button id="btnCancel" CausesValidation="false" onClick="bntCancel_Click" Text="Cancel" runat="server" /> 

注 - 独自の検証を持っている場合、あなたはそれを別の方法を無効にする必要があります。

+0

お返事ありがとうTim!問題は私が単純な ''を使用していることです。 – kseen

2

テキストボックスをフォームで囲み、次にターンして、送信ボタンにキャンセルします。 onsubmitイベントでは、フォームが有効であればtrueを返し、サーバーに送信する必要があります。そうでない場合はfalseを返すメソッドを割り当てます。

だから私は、の線に沿って何か期待:)次の()、バック()と(キャンセルとは違って無条件に要求がいずれかのサーバーに送信されることを意味し、trueを返すこと

<form id="navigatorForm"> 
    <!-- Various text forms here --> 

    <input type="submit" value="Back" onsubmit="back()" /> 
    <input type="submit" value="Next" onsubmit="next()" /> 
    <input type="submit" value="Cancel" onsubmit="cancel()" /> 
    <input type="hidden" id="operation" name="operation" value="" /> 
</form> 

<script type="text/javascript"> 
function validate() { 
    // Perform validation here 
    // If okay, return true, else false 
} 

function next() { 
    document.getElementById('operation').value = 'next'; 
    if(!validate()) { 
     alert('Form is not filed correctly. Please pay more attention!'); 
     return false; // Do not send to server! 
    } else { 
     return true; 
    } 
} 

function back() { 
    document.getElementById('operation').value = 'back'; 
    return true; 
} 

function cancel() { 
    document.getElementById('operation').value = 'cancel'; 
    return true; 
} 
</script> 

お知らせ状況。この時点で、サーバー側では、さらにテストを実行する必要があるかどうかを操作が次にわかるかどうかを確認するだけです。

+0

感謝Neil!私は 'MicrosoftMVCValidation.js'と' <%Html.EnableClientValidation(); %> '式であるので、私はこれのコードを書いていません。 – kseen

関連する問題