请参阅下面的Scirpt代码
var criteriaSubmission = new Object();
criteriaSubmission['CurrentController'] = "xx";
criteriaSubmission['CurrentAction'] = "yy";
criteriaSubmission['CurrentArea'] = "Cp";
var columIndex="[1,2,3,4]"
var addModel = new Object();
$.post('Fav/Add', { addModel: criteriaSubmission, columns: JSON.stringify(columnsIndex) },
function (data) {
});
MVC行动代码:
public ActionResult Add(SavedReportCriteriaModel addModel,string columns)
{
//DO Something
}
列值传递给控制器操作但addModel数据未传递。 addModel值为NULL。
型号代码:
public class SavedReportCriteriaModel
{
public string CurrentController { get; set; }
public string CurrentAction { get; set; }
public string CurrentArea { get; set; }
}
我不想更改SavedReportCriteriaModel以添加列的其他属性。我需要有两个参数。
为什么addModel将变为NULL。 jquery.post代码中的问题是什么?
答案 0 :(得分:2)
为什么会这样:
var addModel = new Object();`
你的addModel
是一个JSON属性,应该用json写成{ "addModel" : ...
而不是将它分配给一个对象......
只需使用代码中的一个简单模型,并修复类型columnsIndex
(因为该属性称为columnIndex
(单数)我可以将所有值传递给它:
脚本页面如下:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
var criteriaSubmission = new Object();
criteriaSubmission['CurrentController'] = "xx";
criteriaSubmission['CurrentAction'] = "yy";
criteriaSubmission['CurrentArea'] = "Cp";
var columIndex = "[1,2,3,4]";
//var addModel = new Object();
$(function() {
$.post('@(Url.Action("Add"))', {
"addModel": criteriaSubmission,
"columns": JSON.stringify(columIndex)
},
function (data) {
alert(data);
});
});
</script>
注意:
$(function() {})
包含$.post
调用,因为只有在jQuery完全加载并且页面准备就绪时发布才很重要columsIndex
在通过帖子传递的JSON数据中被columIndex
修改addModel
作为变量被注释掉了@(Url.Action("Add")
创建的,在我的演示网站中,我会创建/Home/Add
的链接,并在ActionResult
中添加了Home
} controller "