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

JS grabbing text from text-boxes, passing to asp.net mvc ActionResult but ActionResult parameters appear null

本文关键字:ActionResult mvc net 参数 nu 显示 asp 文本 抓取 JS 取文本      更新时间:2023-09-26

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

我有两个文本框,根据用户的选择由两个日期选择器填充,但尽管当我使用下面的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"})
<input type="submit" value="Apply" id ="DateSelected" />

<script type="text/javascript">
  $('.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) },
            });
</script>

行动结果:

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

我是这么说的,但首先我个人觉得ajax到MVC控制器的绑定有时很痛苦。它是灵活的,但如果有什么地方不合适,你只会得到null——正如你所知。无论如何

[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 }),