首页 > 解决方案 > 使用 jQuery 重定向到不同的动作视图

问题描述

只是一个快速的问题。我有一个带有级联组合框的页面...因此,如果用户从第一个组合框中选择任何项目,那么网站将从服务器请求中获取第二个组合框项目...

如果在我获取第二个数据时出现问题,我们的问题是,如果出现错误,我希望网站重定向到 ErrorView 而不是 ComboBox View。

查询

   $("#SelectedProductTypeID").change(function () {
        var pType = $("#SelectedProductTypeID").val();

        var url = '@Url.Content("~/")' + "User/GetProductNameList";
        var ddlsource = "#SelectedProductTypeID";

        $.getJSON(url, { pTypeId: pType }, function (data) {

            if (typeof (data.errorMessage) != undefined) {
                alert(data.errorMessage);
            }

            var items = '';
            $("#SelectedProductNameID").empty();
            $.each(data, function (i, row) {
                items += "<option value='" + row.value + "'>" + row.text + "</option >";
            });
            $("#SelectedProductNameID").html(items);
        });
    });

控制器动作

    public JsonResult GetProductNameList(int pTypeId)
    {
        var (list, error) = productRepository.GetProductList(configuration);
        if (!string.IsNullOrEmpty(error))
        {
            return Json(new { ErrorMessage = "Fail to get product name list" });
        }
       .....
       ......
        return Json(ProductNameList);
    }

我不想显示警报,而是想重定向到共享文件夹中的错误视图。

我试过这个而不是警报

                var errorUrl = '@Url.Content("~/")' + "User/ErrorPage";
                $.ajax({
                    url: errorUrl, success: function (data) {

                    }
                });

使用新的错误操作,但没有工作。不过,我要去同一个视图。错误视图不显示。

    public IActionResult ErrorPage(string errorText)
    {
        return View("Error", 
            new ErrorViewModel
            {
                ActionName = " ",
                ControllerName = "UserController - ",
                ErrorMessage = errorText
            });
    }

标签: jquerymodel-view-controller

解决方案


在 JQuery 中,您可以使用 window.location

试试下面简短的代码

 var errorUrl = '@Url.Content("~/")' + "User/ErrorPage";
            $.ajax({
                url: errorUrl, success: function (data) {

                }
            });

用下面的代码替换它

return window.location = '/User/ErrorPage';

推荐阅读