2016-08-22 45 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

相关问题