如何将Javascript中的对象数组传递给C#mvc5模型
是否有一种方法可以传递一个对象数组,然后将其分配给模型 我搜索到,在模型和对象中使用相同的变量名就可以了,但对我来说不起作用 模型总是得到空值如何将Javascript中的对象数组传递给C#mvc5模型,javascript,c#,asp.net-mvc-5,Javascript,C#,Asp.net Mvc 5,是否有一种方法可以传递一个对象数组,然后将其分配给模型 我搜索到,在模型和对象中使用相同的变量名就可以了,但对我来说不起作用 模型总是得到空值 var answers = []; var answerOthers = []; var comment = $("#message").val(); $("input:radio:checked").each(function () { var questno = $(this).attr("data-question"); var
var answers = [];
var answerOthers = [];
var comment = $("#message").val();
$("input:radio:checked").each(function () {
var questno = $(this).attr("data-question");
var ansid = $(this).val();
answers.push({ QUESTIONID: questno, ANSWERID: ansid});
if ($(this).val() == 3)
{
var txtOther = $("#otherTxt-" + $(this).attr("data-question")).val();
answerOthers.push({
QUESTIONID: questno,
ANSWER: txtOther
});
}
});
$.ajax({
url: 'insertQuestions',
data: { answers: answers, answer_others: answerOthers, userid: userid , comment: comment },
method: 'GET',
success: function ()
{
alert("saved");
},
error: function (e)
{
console.log(e);
}
});
控制器
public void insertQuestions(List<ratingsModel.ANSWERS> answers,
List<ratingsModel.ANSWERS_OTHERS> answer_others, int userid , string comment)
{
insertAnswers(answers,userid);
insertAnswer_others(answer_others, userid);
MySqlConnection myconn2 = new MySqlConnection(cmn.connstring);
myconn2.Open();
string query3 = "INSERT INTO comments (userid,comment) VALUES" +
" (@userid,@comment)";
MySqlCommand cmd2 = new MySqlCommand(query3, myconn2);
cmd2.Parameters.AddWithValue("@userid", userid);
cmd2.Parameters.AddWithValue("@comment", comment);
cmd2.ExecuteNonQuery();
myconn2.Close();
}
public void insertQuestions(列出答案、,
列出答案(其他,int userid,字符串注释)
{
insertAnswers(答案、用户ID);
insertAnswer_others(回答_others,用户ID);
MySqlConnection myconn2=新的MySqlConnection(cmn.connstring);
myconn2.Open();
string query3=“插入注释(userid,comment)值”+
“(@userid,@comment)”;
MySqlCommand cmd2=新的MySqlCommand(query3,myconn2);
cmd2.Parameters.AddWithValue(“@userid”,userid);
cmd2.Parameters.AddWithValue(“@comment”,comment);
cmd2.ExecuteNonQuery();
myconn2.Close();
}
使用GET无法实现这一点(例如,传递给方法的数据需要是查询字符串,要表示集合,需要使用集合索引器的单个名称/值对)
data { [0].QUESTIONID: xx, [0].ANSWERID: yy [1].QUESTIONID: zz, .... etc }
但无论如何它都不应该是GET。您的方法正在更改数据,因此它应该是POST(此外,如果您的集合很大,您的集合将超过查询字符串限制并引发异常)
将ajax代码更改为
$.ajax({
url: @Url.Action('insertQuestions'), // dont hard code your url's
data: JSON.stringify({ answers: answers, answer_others: answerOthers, userid: userid, comment: comment }) // modify,
contentType: 'application/json', // add
method: 'POST', // change
success: function() {
....
作为旁注,如果您使用强类型的HtmlHelper
方法正确生成了表单,那么您的代码可能只是
$.ajax({
url: @Url.Action('insertQuestions'),
data: $('form').serialize(),
method: 'POST',
success: function() {
....
而且不需要任何生成数组的代码。谢谢你的帮助。@StephenMuecke你可以把它作为答案添加进去