Как сделать представление с помощью jquery в MVC? - PullRequest
1 голос
/ 17 февраля 2012

когда я создаю область, я использую JQuery для вызова действия, создаю действие save в БД и возвращаю jsaon сейчас, когда сохранено. Я хочу, чтобы я отображался в моем представлении индекса, как я могу это сделать ??с моим кодом это возможно?я пытался вызвать индекс действия с помощью jquery, это нормально вызывает действие, но не отображает индекс представления

 [HttpPost]
        public ActionResult Create(int? id,string nombre, int idDpto )
        {
            try
            {
                if (id != null)
                {

                    Area c = (from x in db.Areas
                              where x.AreaId == id
                                      select x).First();
                    c.NombreArea = nombre;
                    c.DepartamentoId = idDpto;
                    db.SaveChanges();

                    return Json(new { ok = true, message = "saved employee " });
                }

                    Area e = new Area()
                    {
                          NombreArea = nombre,
                          DepartamentoId = idDpto
                    };
                    db.Areas.Add(e);
                    db.SaveChanges();
                    return Json(new { ok = true, message = "saved employee " });//+ emp.NameEmployee
            }
            catch (Exception ex)
            {

                return Json(new { ok = false, message = ex.Message });
            }
        }


function saveEmployee() {

        var urlSave = '@Url.Action("Create")';
        var iddpt = $("#cmbDept").val();
        var name = $("#txtemp").val();
        var idArea = $("#AreaId").val();
        if (!name) {
            window.alert('el nombre y el departamento son requeridos');
        }
        else {

            if (! iddpt) {
                window.alert('el departamento es requerido');    
            }
            else {
                $.ajax({
                    type: "POST",
                    url: urlSave,
                    data: { id: idArea, nombre: name, idDpto: iddpt },
                    success: function (returndata) {
                        if (returndata.ok) {
                            window.alert(' Guardado ');
                        }
                        else {
                            window.alert(' error : ' + returndata.message);
                        }

                    }
                }
                    );
            }
        }
    }

1 Ответ

4 голосов
/ 17 февраля 2012

Фундаментальная проблема здесь - это разница между вызовом AJAX из JavaScript и обычным веб-запросом.С точки зрения сервера, нет большой разницы.Это то, как браузер обрабатывает их.

Ваше действие Create настроено для использования вызовом AJAX, который вы делаете.Это все хорошо.Но я предполагаю, что Index нет.Это ожидается регулярным запросом.Как я уже сказал, с точки зрения сервера, на самом деле нет разницы.Итак, как вы заметили, звонок на Index происходит просто отлично.Он просто не «рендерится» в браузере.

Терминология здесь немного запутана.Вы не хотите «отображать представление с помощью jQuery», вы хотите направить браузер на выполнение этого запроса.Когда это должно произойти?Я предполагаю, что вы хотите, чтобы это перенаправление происходило, возможно, после success в вашем вызове AJAX?

Если вы хотите, чтобы ваш JavaScript перенаправлял, то вы на правильном пути.Просто подойди к этому по-другому.jQuery не вызывает представление Index в AJAX-режиме (потому что не знает, что делать с ответом).Просто используйте вызов JavaScript для перенаправления пользователя на другой ресурс :

window.location.href = "http://yourserver/controller/action/etc";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...