2016-08-22 44 views
-1

我正在嘗試在更改DatePicker中的值時調用控制器上的操作。每當JavaScript運行'requestDate'參數爲空。預先感謝您的專業知識。在MVC 4中,如何在控制器上發佈/調用和操作

控制器

[HttpPost] 
public ActionResult GetSummaryByDate(string requestDate) 
{ 
    return View(_acctSummary); 
} 

查看

<form name= "SummaryForm" method="post" > 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-9"> 
       Date 
       <input id="DateQry" type="text" class="datepicker" >style="width:70px" name="requestDate" >   
      </div> 
     </div> 
    </div> 
</form> 

部分

@Html.Partial("_SummaryList", @Model) 

的Javascript

$('.datepicker').on('change', function (e) { 
    $.post('AcctSummary/GetSummaryByDate', {'string':e.date}); 
}); 
+0

你確定'e.date'有價值嗎? – Eonasdan

回答

0
  1. 設置你的輸入類型日期(目前已設置爲文本)
  2. 傳遞「值」屬性(e.value)到控制器
+0

這可能是也可能不是正確的。如果使用日期選擇器,則不需要設置輸入日期,事實上,這可能會導致日期選擇器無法工作。 'e.value'也不一定有日期。 – Eonasdan

0

確保您發送的日期值使用與您的操作方法參數名稱相同的參數名稱。您也可以使用$(this).val()來獲取輸入的當前值。

您的操作方法參數名稱爲requestDate。所以讓我們在發送數據時使用相同的。

$('.datepicker').datepicker(); //enable date picker 

$('.datepicker').on('change', function (e) { 
    $.post('AcctSummary/GetSummaryByDate', { requestDate : $(this).val()},function(res){ 
     // do something with the response 
     console.log(res); 
    }); 
}); 

您也可以考慮使用Url.Action HTML輔助方法來建立正確的相對URL的動作方法,而不是硬編碼的。

在Razor視圖

所以,

<script> 
    var summaryUrl = "@Url.Action("GetSummaryByDate","AcctSummary")"; 
    // use this in your following js code 
</script> 

Here是關於通過產生這些網址的使用HTML輔助方法,以你的JavaScript代碼中的詳細說明。

+0

Shyju - 當參數名稱匹配時,它就起作用了。非常感謝你。 @ Url.Action方法不適用於我,因爲在我的測試中,它只會響應Click事件,就像在按鈕中一樣,而不是更改事件。我是一個新的StackOverflow。我是否需要關閉這個問題,這是要謝謝你的方式嗎? – FerSher

+0

Url.Action是一個服務器方法,它應該生成正確的url。我不知道你的意思是「只響應點擊事件」。順便說一句,如果答案有幫助,你可以upvote /標記爲答案(勾選選票旁邊的勾號),我想這是謝謝有人幫助你的方式:)謝謝 – Shyju

相關問題