【问题标题】:Controller parameters are null控制器参数为空
【发布时间】:2021-08-29 19:21:34
【问题描述】:

我正在尝试将我的输入值传递给 C# 控制器,但它在尝试使用这些值时总是出错,因为它们为空。

 $(document).ready(function () {
        $(document).on('submit', '#form', function () {
            var data = JSON.stringify({
                'val1': $("#val1").val(),
                'val2': $("#val2").val()
            });
            $.ajax({
                type: "POST",
                url: 'url',
                contentType: "aplication/json",
                data: data,
                success: function () {
                    alert("It works")
                },
                error: function () {
                    alert("It failed");
                }
            });
            return false;
        });
    });

控制器:

public IActionResult CheckForm(string val1, string val2)
{
    //Do stuff
}

感谢任何关于我缺少哪一步的指导,因为到目前为止我已经没有什么想法了。

【问题讨论】:

  • 如果您的 Ajax POST 调用中的 contentType 只是一个错字?应该是 application/json(有 两个 p - 不只是一个)

标签: ajax asp.net-core-mvc


【解决方案1】:

我尝试使用您的代码,但遇到了很多问题。返回的结果与您的一样为空。我改变了你的代码,终于得到了价值。代码结果如下:

控制器:

  public IActionResult Index()

        {

            return View();
        }

        [HttpPost]
        public IActionResult Index(string val1, string val2)

        {

             // Do stuff
        }

查看:

<form>
    <input id="val1" />
    <input id="val2" />
    <input type="submit" value="test" id="form2"/>
</form>
@section scripts{
    <script>
        $("form").on("submit", function (event) {
    
            var data = {
                'val1': $("#val1").val(),
                'val2': $("#val2").val()
            };
            console.log(data)
          
            $.ajax({
                type: "POST",
                url: '/test/index',
                //dataType: 'json',
                //contentType: "application/json",
                data:data,
                success: function () {
                    alert("It works")
                },
                error: function (error) {
                    console.log(error)
                    alert("It failed");
                }
            });
            return false;
        });
    </script>
}

结果:

【讨论】:

    【解决方案2】:

    创建视图模型

    public ValViewModel
    {
        public string Val1 { get; set; }
        public string Val2 { get; set; }
    }
    

    动作方法:

    public IActionResult CheckForm([FromBody] ValViewModel viewModel)
    {
        // Do stuff
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多