asp.net MVC Ajax 发送两个参数

本文关键字:两个 参数 net MVC Ajax asp | 更新日期: 2023-09-27 18:37:28

为什么TestData没有收到任何东西?

开机自检 http://localhost:46628/Home/TestData 500(内部服务器错误)

index.cshtml:

@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script src="~/Scripts/knockout-2.2.0.js"></script>
<button data-bind="click: sendata">send data</button>
<script>
function MyViewModel() {
    var self = this;
    self.sendata = function () {
        $.ajax({
            type: 'POST',
            url: 'Home/TestData',
            contentType: 'application/json; charset=utf-8',
            data: { json: 'json', date: 'date' },
            dataType: 'json'
        });
    }
}
ko.applyBindings(new MyViewModel());
</script>

控制器:

public class HomeController : Controller
{
    //
    // GET: /Home/
    public ActionResult Index()
    {
        return View();
    }
    [HttpPost]
    public void TestData(string json,string date)
    {
        Console.WriteLine(json);
    }
}

asp.net MVC Ajax 发送两个参数

您可以使用如下所示的参数data

data: { json: 'json', date: 'date' },

即使您指定内容类型为 json ,jQuery 也使用 $.param 来序列化您的数据,因此数据不是发送 json,而是像这样发送:

json=json&date=date

但是,您的服务器需要提供 json,因此模型绑定失败。

相反,您应该在进行 AJAX 调用之前将数据手动序列化为 json:

data: JSON.stringify({ json: 'json', date: 'date' }),

其余代码似乎没问题。