c# - AJAX 发布到 ASP.NET MVC 控制器操作方法 - 空参数
问题描述
我想用 AJAX 将带有一些数据的字符串数组发布到我的控制器。它只是纯文本,我的控制器总是收到一个空参数。我知道我不应该字符串化,因为我不使用模型或视图模型。
我搜索了其他问题,但大多数是指表单并使用视图模型属性。
这是我的代码:
控制器
[HttpPost]
public ActionResult FirstAjax(string[] listValues)
{
//TODO
return Json("Reached the controller", JsonRequestBehavior.AllowGet);
}
我添加了 JSON 返回以检查我是否真的在点击控制器,并在我的视图中收到消息。
阿贾克斯邮报
var listValues = [];
listElements.each(function (index, element) {
listValues.push(element.innerText);
});
var serviceURL = '/Products/FirstAjax';
$.ajax({
type: "POST",
url: serviceURL,
data: listValues,
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
由于我的列表可通过拖放进行排序,因此单击按钮时按顺序listValues
填充项目的文本值。<li>
看法
<div class="demo">
<ul id="sortable">
<li class="ui-state-default">Cat</li>
<li class="ui-state-default">Dog</li>
<li class="ui-state-default">Tiger</li>
</ul>
<button type="button" onclick="display_array();">Ajax Post!</button>
</div><!-- End demo -->
解决方案
将您的 ajax 选项更改为:
$.ajax({
...
data: {listValues: listValues},
...
});
原因是:服务器期望发布的对象/查询字符串与参数命名相同。被data
转换为listValues=...&otherParams=...
查询字符串。如果您在未指定参数名称的情况下发布数组,则 JQuery 无法正确映射它们
推荐阅读
- python - “groupby”返回每个分组项目的出现百分比
- python-3.x - Weasyprint 输出不显示大部分原始网页?
- javascript - 我无法理解这段代码中的 parseInt 方法
- c++ - 您可以在 if 语句中使用数字范围吗?
- flutter - 我在哪里可以获得 VSCode 中 dart 启动的配置?
- python - 使用每个选择标准的用户输入循环遍历数据框
- python-3.x - Socket/ZeroMQ – 分段错误 python
- python-3.x - Raspberry Pi [Errno 121] 温度传感器远程 I/O 错误
- r - 从任意笛卡尔坐标转换为 UTM?
- php - 从文本文件中获取数据时如何在 txt 文件中换行?