主计长:
public ActionResult AddRemarksToEvaluationSheet(string[] function_param)
{
return View();
}有什么帮助吗?以上代码是经过编辑的。啊,真灵!
发布于 2016-05-18 15:20:40
你在这里有很多事要做..。
首先,不要给输入框if编号-在这个场景中,如果需要的话甚至不使用value...But,将值放入数据元素:
<input type="text" class="form-control remark" data-remark-id="@i" />检索值时,需要获取值,而不是文本框本身:
var remarks = [];
jQuery(".remark").each(function() {
remarks.push(jQuery(this).val());
});当对参数(如数组或复杂对象)执行任何奇怪的操作时,如果您使用JSON而不是URL编码的缺省值,这将使事情变得更好。
您还应该避免绝对路径,而应该使用Url.Action,这样无论应用程序相对于域的位置如何,它都能工作。
$.ajax({
type: "POST",
url: "@Url.Action("AddRemarksToEvaluationSheet", "Teacher")",
data: JSON.stringify({ function_param: remarks }),
contentType: "application/json; charset=utf-8;"
});您可以接受字符串数组,而不是对象数组:
[HttpPost]
public ActionResult AddRemarksToEvaluationSheet(string[] function_param)
{
}发布于 2016-05-18 15:37:13
我有一种感觉,你一开始就没有得到数组中的评论。
如果您还没有,请使用允许您调试js的浏览器。如果使用Chrome,右键单击-> (或F12)。转到“源”选项卡,转到js文件,并放置一个断点,查看备注数组的外观。
关于守则:
您似乎不需要输入的id属性。更别提数字ids了。
若要填充备注数组,请获取所有dom元素,其中包含您在所有输入中放置的类。对于每个数组,推送数组中的值。
var remarks = [];
$(".form-control").each(function() {
remarks.push($(this).val());
});您可以添加额外的代码,以只添加有价值的代码。
var remarks = [];
$(".form-control").each(function() {
if($(this).val().length){
remarks.push($(this).val());
}
});ajax调用:
$.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种可能的解决方案:
https://stackoverflow.com/questions/37303619
复制相似问题