Публикация Ajax в mvc

#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);
    }
  

выполняя описанное выше, я могу получить строковое значение, а также модальный объект.Спасибо за всю помощь.