Как я могу перенаправить на действие в .Net Core после вызова Ajax? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть скрипт, который выполняет ajax-вызов к действию в контроллере и сохраняет некоторые записи.

Весь процесс работает нормально, но моя маленькая проблема - перенаправить на другую страницу после успешного сохранения записей.

С моим кодом ниже записи были успешно добавлены с предупреждением, указывающим, как это описано в коде "msg + "Courses were Registered"". Вместо того, чтобы делать это, я хочу, чтобы он перенаправлял на действие.

Код JavaScript:

 <input type="submit" value="Register Courses" id="register" class="btn btn-rose" />
        <script>
            $(document).ready(function () {

                $("#register").click(function () {
                   var items = [];
               $('input:checkbox.checkBox').each(function () {
                        if ($(this).prop('checked')) {
                        var item = {};
                        item.CourseID = $(this).val();
                        item.CourseCode = $(this).parent().next().html();
                        item.CourseName = $(this).parent().next().next().html();
                        item.Units = $(this).parent().next().next().next().html();
                        items.push(item);
                    }
                    });

                    var options = {};
                    options.url = "/Course/SaveCourse";
                    options.type = "POST";
                    options.dataType = "json";
                    options.data = JSON.stringify(items);
                    options.contentType = "application/json; charset=utf-8;";
                    options.success = function (msg) {
                        alert(msg + " Courses were Registered");
                    };
                    options.error = function () {
                        alert("Error while Registering Courses");
                    };
                    $.ajax(options);
                });

            });

        </script>

Контроллер

 [HttpPost]
        public IActionResult SaveCourse([FromBody]List<CourseRegModel> courseIDs)
        {

            var user = HttpContext.Session.GetString("currentUser");
            if (user == null)
            {
              return RedirectToAction("Login", "Account");
            }
            ViewBag.student = user;
            var pendingPayment = (from row in _context.BursaryTransactions where row.MatricNo == user && row.ResponseCode == "021" select row).Count();
            if (pendingPayment > 0)
            {
                return RedirectToAction("PaymentSummary", "Student");
            }
            var student = _context.StStudentInfo.Include(m =>m.AdmInstProgramme.AdmInstDepartment).Include(m =>m.AdmInstClassLevels).FirstOrDefault(m => m.MatricNo == user);
            var session = _context.AdmInstProgrammeTypeSession.Include(m => m.AdmInstSemesters).Include(m => m.AdmInstSessions).Include(m => m.AdmInstProgramType).Where(m => m.IsActive == true).FirstOrDefault(m => m.ProgramTypeId == student.ProgrammeTypeId);
            foreach (CourseRegModel courseID in courseIDs)
            {
                courseID.Level = student.AdmInstClassLevels.ClassLevel;
                courseID.Semester = session.AdmInstSemesters.Semester;
                courseID.Session = session.AdmInstSessions.SessionName;
                courseID.Department = student.AdmInstProgramme.AdmInstDepartment.Department;
                _context.CourseRegModel.Add(courseID);

            }
            int courses = _context.SaveChanges();

            return Json(courses);
        }

Цель - return RedirectToAction("MyCourses","Courses"); после SaveChanges();

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Вы можете просто перенаправить вашу страницу в обработчик успеха ajax,

options.success = function (msg) {
    window.localtion.href = "/Courses/MyCourses";
    // or window.location.href = '@url.Action("MyCourses","Courses")';
};
0 голосов
/ 06 ноября 2019

Если вы хотите перенаправить на другой метод действия, зачем вам использовать AJAX? Но я думаю, что вы можете обойти это, выполнив перенаправление на стороне клиента AJAX после того, как он успешно получит ответ, который вы используете JavaScript для выполнения перенаправления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...