JS从文本框中抓取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为null

JS从文本框中抓取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为null

我有2个文本框,在用户选择时由2个日期选择器填充,但是当我使用下面的javascript将其传递给actionresult时,信息正确地从文本框中获取。 actionresult的参数显示为null。

我该如何解决?

码:

@Html.Label("Start", "Start Date:") @Html.TextBox("Start", string.Empty, new {@id = "Start", @class = "datepicker"}) @Html.Label("endd", "End Date:") @Html.TextBox("endd", string.Empty, new {@id = "End", @class = "datepicker"})   $('.datepicker').datepicker(); $("#DateSelected").click(function () { var startD = $('#Start').val().toString(); var endD = $('#End').val().toString(); $.ajax({ url: '/Docs/FirstDoc', type: "Post", data: { start: String.valueOf(startD), end: String.valueOf(endD) }, });  

行动结果:

  [HttpPost] public ActionResult FirstDoc(string start, string end) { FirstDocModel firstDocModel = FirstDocHelper.RunFunction(start, end); return PartialView(firstDocModel); } 

这就是我所说的 – 但首先我个人也发现ajax对MVC控制器的绑定有时会很痛苦。 它很灵活,但如果有什么不合适的话,你就会得到空值 – 正如你所知道的那样。 无论如何…

 [HttpPost] public ActionResult FirstDoc(MyObject inputObj) { //use inputObj here as needed } 

然后,您需要MyObject的定义 – 以保持简单

 public class MyObject{ string start {get;set;} string end {get;set;} } 

如果所有的鸭子都在一排,当然包括你在ajax方面的选项,你的对象’应该’绑定。

传递data方式适用于type: 'get'但不适用于post 。 试试这个:

 data: JSON.stringify({ start: startD, end: endD }),