В настоящее время я пытаюсь передать данные из AJAX в контроллер, однако модель всегда показывает пустой / count = 0.
Звонок AJAX:
$("#btnSubmit").click(function(e) {
e.preventDefault();
var _this = $(this);
var url = _this.closest("form").attr("action");
var rows = [];
var items = $(".itemRow");
$.each(items, function(i, item) {
var tbOne = $(item).find("input[name='tbOne']").val();
var tbTwo = $(item).find("input[name='tbTwo']").val();
var row = {
Test1: tbOne,
Test2: tbTwo
};
rows.push(row);
});
//Let's post to server
$.ajax({
type: "POST",
url: url,
data: rows,
contentType: "application/json"
})
.done(function(result) {
//do something with the result
})
});
});
Модель:
public class Test
{
public string Test1 {get; set;}
public string Test2 {get; set;}
}
Контроллер:
[HttpPost]
public ActionResult Insert(<SomeOtherModel> otherModel, IEnumberable<Test> model){
foreach (var item in model){
//to do here
}
}
Я не уверен, что мне не хватает ... Я пытался искать по другим сообщениям, и они сделали примерно то же самое, что и я. Но я просто не могу передать данные своему контроллеру ..
1 ответ
Во-первых, вы передали одну модель контроллеру, поэтому действие должно иметь только один параметр. Кроме того, ваш contentType равен "application/json"
, а ваши данные не являются данными json. Кроме того, если вы хотите передать данные json контроллеру, вы нужно использовать [FromBody].
Вот демоверсия сработала:
Контроллер:
[HttpGet]
public ActionResult Insert()
{
return View();
}
[HttpPost]
public ActionResult Insert([FromBody]IEnumerable<Test> model)
{
return View();
}
Вид:
@{
ViewData["Title"] = "Insert";
}
<h1>Insert</h1>
<button id="btnSubmit">submit</button>
@section scripts{
<script type="text/javascript">
$("#btnSubmit").click(function () {
var rows = new Array();
var row = {};
row.Test1 = "test1";
row.Test2 = "test2";
rows.push(row);
var row1 = {};
row1.Test1 = "test11";
row1.Test2 = "test21";
rows.push(row1);
var model = JSON.stringify(rows);
//Let's post to server
$.ajax({
type: "POST",
url: "Insert",
data: model,
contentType: "application/json; charset=utf-8"
});
});
</script>
}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.