【问题标题】:Redirect to different Action View with jQuery使用 jQuery 重定向到不同的动作视图
【发布时间】:2020-07-07 09:28:39
【问题描述】:

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

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

JQUERY

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

【问题讨论】:

    标签: jquery model-view-controller


    【解决方案1】:

    在 JQuery 中你可以使用 window.location

    试试下面简短的代码

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

    用下面的代码替换它

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

    【讨论】:

    • 谢谢...现在可以使用了..但是您知道我的代码出了什么问题吗?
    • 我在 .net 方面也没有那么多经验,但我认为您的 var errorUrl 不合适您可以设置调试并查看 errorUrl 中的 url 是什么。
    • 如果 url 正确,那么你必须用 JsonResult 替换 IActionResult,因为你有调用 ajax。
    猜你喜欢
    • 2013-01-31
    • 2010-10-07
    • 2015-06-14
    • 2012-12-15
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多