Я пытаюсь передать значение со стороны клиента на сторону сервера, используя AJAX. Я хочу передать всю модель в качестве параметра, и поэтому я сериализую ее и передам в качестве параметра. Однако, похоже, он не работает, и на сервере не найдено никаких значений.
Список строк в основном представляет собой select2
выбранные значения.
Это упрощенная версия кода:
Модель:
public class FruitsViewModel
{
public List<SelectListContainer> FruitList { get; set; }
public List<SelectListContainer> VegetableList { get; set; }
public List<string> SearchFruit { get; set; }
public List<string> SearchVegetable { get; set; }
}
Просмотр:
<form id="formFruits">
@Html.ListBoxFor(m => m.SearchFruit , new SelectList(Model.FruitList , "Value", "Display", Model.SearchFruit ), new { @class = "form-control", id = "SearchFruit ", name = "SearchFruit ", multiple = "true" })
@Html.ListBoxFor(m => m.SearchVegetable , new SelectList(Model.VegetableList , "Value", "Display", Model.SearchVegetable ), new { @class = "form-control", id = "SearchVegetable ", name = "SearchVegetable ", multiple = "true" })
<button id ='btnSubmit' type='button'>Submit</button>
</form>
Сценарий:
$(document).on("click", "#btnSubmit", function (e) {
e.preventDefault();
var page = 4;
var url = "/FruitDetails/Index";
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json',
dataType: "json",
cache: false,
data: { model: $('#formFruits').serialize(),page:page},
success: function (result) {
$("#divResults").html(result);
},
error: function (result) {
console.log("Failure!!");
}
});
});
Контроллер:
[HttpPost]
public ActionResult Index(FruitsViewModel model,int page)
{
}
Есть ли проблема с кодом? Или это известная проблема для выпадающего списка Select2?
РЕДАКТИРОВАТЬ: Я также попытался назначить их напрямую и отправить их в виде строки JSON, но это тоже не работает.
$(document).on("click", "#btnSubmit", function (e) {
e.preventDefault();
var page = 4;
var url = "/FruitDetails/Index";
var SearchFruit = $("#SearchFruit ").val();
var SearchVegetable = $("#SearchVegetable").val();
var model = JSON.stringify({
SearchFruit : SearchFruit,
SearchVegetable : SearchVegetable
});
$.ajax({
url: url,
type: 'POST',
cache: false,
contentType: 'application/json',
dataType: "json",
data: { model:model, page:page },
success: function (result) {
$("#divResults").html(result);
},
error: function (result) {
console.log("Failure!!");
}
});
});
Кажется, это тоже не работает.