1

私は、すべてのjavascript、つまりjQuery DatePickerコントロールなどを含むマスターレイアウトを持つメインビューを持っています.

このメイン ビュー内で、部分ビューを含む Ajax.BeginForm(.....) を使用します。私のコントローラーでは、検証が失敗すると、その部分的なビューが返されます。(また、Ajax の UpdateTargetId には、その部分ビューを含むセクションの ID が設定されています。)

エラーの箇条書きが正しく表示されます。しかし、その後、JavaScriptが緩んでいるように見えました。たとえば、カレンダー/日付ピッカーが機能しなくなり、通常の入力ボックスが表示されます。

その理由は何ですか?

どうもありがとう!!

コードは次のとおりです。

私のメイン ビューには 1 つの Ajax フォームが含まれています。内部には 2 つの部分的なビューがあります。2番目のものには日付ピッカー入力があります。

@using (Ajax.BeginForm("ActionXXX", "ControllerYYY", new AjaxOptions
{
    HttpMethod = "POST",
    UpdateTargetId = "main"        
}))
{
     <section id="main" class="....." data-section="....." data-step="">  

            @Html.Partial("ValidationSummary") 

            @Html.Partial("SharedPartialView", Model, new ViewDataDictionary {.....})          

     </section> 

}

そしてJSはマスターファイルに含まれています。(メインビューにはこのためのレイアウトがあります)

<script type="text/javascript">   

    $('input.date').watermark('dd/mm/yyyy');

    $('input.date').datepicker({
        dateFormat: "dd/mm/yy",
        maxDate: 0, 
        onClose: function () { $(this).valid(); } 
    });    

    $('input.time').watermark('hh:mm');
    $('input.time').timeEntry();

</script>

コントローラーは次のとおりです。検証が失敗した場合、部分ビューを返します ("SharedPartialView")

if (Request.IsAjaxRequest())
    return PartialView("SharedPartialView", ciShareModel); //model

これらの日付ピッカーと透かし jquery は、ページが最初に読み込まれたときに機能します....

4

1 に答える 1

3

部分ビューをロードした後、JavaScript を再度実行していますか? - スクリプト ブロックはページの読み込み時にのみ実行されるため、マスター ページの はマスターの読み込み時にのみ実行されます。ajax 呼び出しを行うときは、部分ビュー用の JavaScript を個別に実行する必要があります。

このコードを部分ビューに入れます。

<script type="text/javascript">
    $(document).ready(function() {
        $('input.date').datepicker({
            dateFormat: "dd/mm/yy",
            maxDate: 0, 
            onClose: function () { $(this).valid(); } 
        });
    }); 
</script>

- を使用する代わりに$('input.date')、入力要素に一意の ID/クラスを指定することをお勧めします。そうしないと、ユーザーがページの他の「input.date」フィールドに入力した可能性のあるデータがリセットされます。ex: に使用$('input.partialView_Date)し、部分ビューで入力フィールドを呼び出します。<input type="text" class="partialView_Date" />

于 2012-11-05T06:58:32.130 に答える