2017-07-21 8 views
-1

私の要件は、ボタンをクリックすると、日付を選択できるダイアログが開き、できれば開始日と終了日です。 ok/submitをクリックするとdatetimeがコントローラの[HttpPost]アクションメソッドに渡されます。 これは残念ながら、それはActivate]ボタンをクリックしたときに、ここでポップアップダイアログからdatetimeをmvcコントローラーに渡す方法

input name="ActivateBtn" type="submit" class="btn btn-primary" value="Activate" onclick="opendatedialog()" /> 
<script> 
    function opendatedialog() { 
     $("#datepickerdialog").dialog({ 
      height: 300, 
      width: 500, 
      modal: true, 
      resizable: false, 
      buttons: { 
       "OK": function() { 
        var viewUrl = '@Url.Action("Activate", "User")'; 
        $.post(viewUrl, new { startDate: $('.datepickerstart').val(), endDate: $('.datepickerend').val() }); 
        $(this).dialog("close"); 
        return true; 
       }, 
       "Cancel": function() { $(this).dialog("close"); return false; } 
      }, 
      open: function() { 
       $(this).siblings('.ui-dialog-buttonpane').find("button:contains('OK')").focus(); 
      } 
     }); 
    } 
    $(function() { 
     $('.datepickerstart').datepicker(
      { 
       minDate: 0, 
       dateFormat: 'yy-mm-dd' 
      }).datepicker("setDate", "0"); 
     $('.datepickerend').datepicker(
      { 
       minDate: 0, 
       dateFormat: 'yy-mm-dd' 
      }).datepicker("setDate", "2099/12/31"); 
    }); 

// UserControllerで

[HttpPost] 
public ActionResult Activate(DateTime startDate, DateTime endDate) 
{ 
    //TO DO 
    return RedirectToAction("Index"); 
} 

を動作しませんでした...私は試したもので、日付ピッカーとのダイアログがポップアップ表示されます。しかしその後、okボタンのクリックは何もしません。

+0

関数のclickイベントのokボタンをキャプチャし、コントローラアクションに向けたAJAXコールポストを作成して、必要なものを渡します。これらの部分のそれぞれは、簡単に基本的な例を検索します。あなたはあなたの要件に基づいてスパイダーできます。 Razorマークアップを使用していてJSが別のファイルではなく埋め込まれている場合は、URLパスを手動で心配することなく、通話のためのコントローラへのURL.Actionリンクを簡単に作成できます。 –

+0

ユーザーを別のページにリダイレクトする必要がありますか?または、あなたはajaxを介してあなたの行動を呼び出すと、同じページにユーザーを保持する必要がありますか? – Alisson

+0

ajaxの全体のポイントは、同じページにとどまることです。あなたの 'return RedirectToAction(" Index ");は、ajax呼び出しが決してリダイレクトしないので無意味です。リダイレクトする場合は、通常のフォーム送信を行います。 –

答えて

0
$.post(viewUrl, { startDate: $('.datepickerstart').val(), endDate: $('.datepickerend').val() }); 

これは機能しました。

関連する問題