【发布时间】:2017-01-25 10:33:07
【问题描述】:
好的,所以我的问题是两方面的。我正在尝试将选定行中的特定字符串值检索到 JQuery 数组中:
<script>
var finalCSG=[];
$('.checkbox').change(function () {
var csg = [];
var checkedRows = $('.checkbox:checked');
$.each(checkedRows, function (index, item)
{
var row = $(this).closest('tr');
csg.push(row.find('.connote').text());
})
finalCsg = csg;
});
</script>
我的第一个问题:数组 'finalCsg' 的内容应该是简单的字母数字字符串,但它们包含很多前导和尾随空格(当我使用 console.log 来检查它们时)。我该如何解决这个问题?
现在,第二个也是更紧迫的问题。我尝试使用以下代码将此数组传递给我的 MVC 控制器(单击按钮):
var url = '@Url.Action("Assign", "TransactionHistory")';
document.getElementById("AssignButton").onclick = function () { myFunction() };
function myFunction() {
$('#myDiv').load(url, { csgList: finalCsg })
}
'TransactionHistory' 是我的控制器名称。即使在这里,变量 csgList 也包含正确的数组元素(不过,当我检查 console.log 时,我已经描述了这些空格)。但我的控制器只得到一个空字符串。控制器定义如下:
[HttpPost]
public ActionResult Assign(List<string> csgList)
{
return Content("Hi");
}
我最初尝试使用 string[] csgList 作为参数,然后尝试使用 List 但它总是从 JQuery 中得到一个空值(或者我猜是空字符串)(return 语句只是为了测试,现在没有太大意义)。有些帖子提到了“传统”关键字的使用,但我主要不是前端开发人员(我正在为工作中的某个人提供服务,有严格的截止日期),所以我无法使用它来达到适当的效果。
任何输入都会非常有益。
【问题讨论】:
-
你的参数是一个集合,所以数据需要
{ [0].csgList: someValue, [1].csgList: anotherValue, .... }(即索引)或者你需要对数据进行字符串化并设置contentType: 'json'(或者你可以使用traditional: true选项。使用$.ajax()更容易做到这一点。 -
string[]或IEnumerable<string>或 List` 都可以。但是您不能按原样通过 csgList。它需要像我在第一条评论中指出的那样 - 例如使用JSON.stringify()进行字符串化并设置contentType选项 -
但是如果我需要更改 JQuery 代码,我究竟应该在哪里进行您指定的更改(例如对数据进行字符串化、使用 $.ajax()、设置传统:true 等)?
-
好的,非常感谢!我会等着的。答案可以挽救我的工作......现在,直到我寻找一个与我的技能相匹配的不同的人。
标签: jquery arrays asp.net-mvc