#jquery #ajax #asp.net-mvc
#jquery #ajax #asp.net-mvc
Вопрос:
Я пытаюсь отправить данные на контроллер с помощью ajax post, он содержит модель и строку, строковое значение поступает на контроллер, но модель всегда равна нулю.Кто-нибудь может помочь.Прикрепление кода
<script>
function save() {
var st = "Test";
var source = ({
'Name': $('#Name').val(),
'Code': $('#Code').val(),
'Address': $('#Address').val(),
'City': $('#City').val(),
'State': $('#State').val(),
'Country': $('#Country').val(),
'Phone': $('#Phone').val(),
'Fax':$('#Fax').val()
});
$.ajax({
type: "POST",
url:'@Url.Action("Save", "Hospitals")',
data: { 'st': st, 'hospital': source }
});
}
Контроллер
public ActionResult Save(string st,Hospital hospital)
{
if (ModelState.IsValid)
{
db.Hospitals.Add(hospital);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
var dept = db.Departments.ToList();
ViewBag.department = dept;
}
return View(hospital);
}
Ответ №1:
Использовать
data: { 'st': st, 'hospital': JSON.stringify(source) }
Это преобразует переменную для интерпретации классом модели в вашем методе действия
Комментарии:
1. привет, @muthu, спасибо за немедленный ответ. Но он по-прежнему не работает, показывая нулевое значение. Любой другой способ решения проблемы?
Ответ №2:
Jquery
<script>
function save() {
var cval;
var str = "";
$(".chkmaincat:checked").each(function (i) {
cval = $(this).val();
str = str cval ",";
});
alert(str);
var source =
{
'Name': $('#Name').val(),
'Code': $('#Code').val(),
'Address': $('#Address').val(),
'City': $('#City').val(),
'State': $('#State').val(),
'City': $('#City').val(),
'Country': $('#Country').val(),
'Phone': $('#Phone').val(),
'Fax': $('#Fax').val()
}
$.ajax({
type: "POST",
url: '/Hospitals/Save?st=' str,
data: source
});
}
Контроллер
public ActionResult Save(string st,Hospital hospital)
{
if (ModelState.IsValid)
{
db.Hospitals.Add(hospital);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
var dept = db.Departments.ToList();
ViewBag.department = dept;
}
return View(hospital);
}
выполняя описанное выше, я могу получить строковое значение, а также модальный объект.Спасибо за всю помощь.