首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向控制器ASP.NET MVC发送Javascript数组

向控制器ASP.NET MVC发送Javascript数组
EN

Stack Overflow用户
提问于 2016-05-18 15:09:16
回答 2查看 2.3K关注 0票数 0
  1. 我试图将用户输入存储在javascript数组中,并通过ajax调用将其发送给控制器。但是我在控制器的参数中得到的都是null。下面是代码:

主计长:

代码语言:javascript
复制
public ActionResult AddRemarksToEvaluationSheet(string[] function_param)
    {
        return View();
    }

有什么帮助吗?以上代码是经过编辑的。啊,真灵!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-18 15:20:40

你在这里有很多事要做..。

首先,不要给输入框if编号-在这个场景中,如果需要的话甚至不使用value...But,将值放入数据元素:

代码语言:javascript
复制
<input type="text" class="form-control remark" data-remark-id="@i" />

检索值时,需要获取值,而不是文本框本身:

代码语言:javascript
复制
var remarks = [];
jQuery(".remark").each(function() {
    remarks.push(jQuery(this).val());
});

当对参数(如数组或复杂对象)执行任何奇怪的操作时,如果您使用JSON而不是URL编码的缺省值,这将使事情变得更好。

您还应该避免绝对路径,而应该使用Url.Action,这样无论应用程序相对于域的位置如何,它都能工作。

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: "@Url.Action("AddRemarksToEvaluationSheet", "Teacher")",
    data: JSON.stringify({ function_param: remarks }),
    contentType: "application/json; charset=utf-8;"
});

您可以接受字符串数组,而不是对象数组:

代码语言:javascript
复制
[HttpPost]
public ActionResult AddRemarksToEvaluationSheet(string[] function_param)
{
}
票数 0
EN

Stack Overflow用户

发布于 2016-05-18 15:37:13

我有一种感觉,你一开始就没有得到数组中的评论。

如果您还没有,请使用允许您调试js的浏览器。如果使用Chrome,右键单击-> (或F12)。转到“源”选项卡,转到js文件,并放置一个断点,查看备注数组的外观。

关于守则:

您似乎不需要输入的id属性。更别提数字ids了。

若要填充备注数组,请获取所有dom元素,其中包含您在所有输入中放置的类。对于每个数组,推送数组中的值。

代码语言:javascript
复制
var remarks = [];
$(".form-control").each(function() {
    remarks.push($(this).val());
});

您可以添加额外的代码,以只添加有价值的代码。

代码语言:javascript
复制
var remarks = [];
    $(".form-control").each(function() {
        if($(this).val().length){
           remarks.push($(this).val());
        }
    });

ajax调用:

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: addRemarksUrl,
    data: JSON.stringify({ function_param: remarks }),
    contentType: "application/json; charset=utf-8;"
});

其中addRemarksUrl可以是在html中声明的全局变量。

有其他方法可以得到网址。看看这里:

How to send razor created Url to js file

该用户提供3种可能的解决方案:

  1. 全局js变量
  2. 自定义"data-“属性
  3. 隐藏输入
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37303619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档