在MVC 4中,如何在控制器上发布/调用和操作

时间:2016-08-22 20:51:12

标签: javascript asp.net-mvc-4

我正在尝试在更改DatePicker中的值时在控制器上调用操作。只要javascript运行了'requestDate'参数为null。提前感谢您的专业知识。

控制器

class Car < ActiveRecord::Base
  def info
    {
      :id      => self.id,
      :make    => self.make,
      :year    => self.year,
      :user_id => self.user_id
    }
  end
end

查看

[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>

的Javascript

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

2 个答案:

答案 0 :(得分:0)

  1. 将输入类型设置为日期(目前已将其设置为文本)
  2. 传递&#39;值&#39;属性(e.value)到您的控制器

答案 1 :(得分: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,而不是对其进行硬编码。

所以在你的剃刀视图中,

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

Here是一篇关于将html帮助程序生成的url传递给javascript代码的详细文章。