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);
}
}
您可以使用如下所示的参数data
:
data: { json: 'json', date: 'date' },
即使您指定内容类型为 json
,jQuery 也使用 $.param
来序列化您的数据,因此数据不是发送 json,而是像这样发送:
json=json&date=date
但是,您的服务器需要提供 json,因此模型绑定失败。
相反,您应该在进行 AJAX 调用之前将数据手动序列化为 json:
data: JSON.stringify({ json: 'json', date: 'date' }),
其余代码似乎没问题。