【问题标题】:ASP.Net MVC 5 ActionResult throwing 404 exceptionASP.Net MVC 5 ActionResult 抛出 404 异常
【发布时间】:2017-01-06 13:33:10
【问题描述】:

我的大脑严重冻结: 我有一个 MVC 5 项目,该项目使用引导弹出窗体进行日期数据输入。在主登录页面上调用弹出框,数据被字符串化 JSON 转发到 Home 控制器中的 ActionResult 函数,然后访问 SQL 服务器数据库并返回 JSON 数据集,该数据集用于构建在 cshtml 视图中呈现的基于 D3 的可视化. 到目前为止,一切正常,数据是有效的模型,即已经过单元测试。 Home 控制器有两个控制器: popover js 脚本(抄自http://jsfiddle.net/itsabhik/cxm4rt2u/2/):

        $('.main-attributes').on('shown.bs.popover', function () {
        $('.submit').click(function () {
            var fromval = $('.popover #fromvalue').val();
            var toval = $('.popover #tovalue').val();
                    var option = {
                        url: '/Home/LoanCount',
                        data: JSON.stringify({ dStart: fromval, dEnd: toval }),
                        method: 'post',
                        dataType: 'json',
                        contentType: 'application/json;charset=utf-8'
                    };

            $.ajax(option).done(function (data) {
                        return (data);
            })
            $('.main-attributes').popover('hide');
        });
        $('.cancel').click(function () {
            $('.main-attributes').popover('hide');
        });
    });

还有控制器代码:

        public ActionResult LoanCount(DateTime dStart, DateTime dEnd)
    {
        int iStart = (dStart.Year * 10000) + (dStart.Month * 100) + dStart.Day;
        int iEnd = (dEnd.Year * 10000) + (dEnd.Month * 100) + dEnd.Day;

        var json = Models.LoanCount.getCountStats (iStart, iEnd);
        var data = JsonConvert.DeserializeObject<List<Models.LoanCount>> (json);

        ViewBag.jData = json;

        return Redirect ("/Views/Home/LoanCount.cshtml");  /* This is one of the 
                                    redirect variations                                             that have been tried */
    }

我遇到的问题是我使用的所有重定向变体都会抛出 404 not found 异常。调用无参数 ActionResult 的 RedirectToAction(...) 会引发 403 异常。 cshtml文件存在且路径验证无误。

正在使用的浏览器是 Chrome。缺少什么 - 关于这个问题的任何线索和建议?

【问题讨论】:

  • 我不确定您为什么要返回重定向,但如果您只是从 Home/LoanCount 返回视图 - 路由是否有效?
  • 我想使用弹出窗体从主页传递 SQL 查询参数。这些参数会产生一系列数据来评估企业中不同实体的流程绩效。
  • 我想使用通过弹出表单输入的数据从主应用程序页面传递 SQL 查询参数。这些参数会产生一系列数据来评估流程性能,并且通常会生成企业中不同实体的 BI 仪表板。 Home/LoanCount 路线运行良好,并在第一次剪辑中实施,以测试基于 D3 的可视化页面。 SQL 查询参数在模型类中被硬编码以简化调试过程。希望这是有道理的。
  • 您是否尝试过重定向到控制器方法或完整的 url 而不是视图?
  • 是的。结果是一样的。

标签: asp.net-mvc-5


【解决方案1】:

您可以使用波浪号(~) 前缀返回视图。因此,URL 不会更改。

return View("~/Views/Home/LoanCount.cshtml");

如果您想更改 URL,您必须使用带有控制器名称和方法名称的 RedirectToAction 方法。

【讨论】:

    【解决方案2】:

    上一条评论:粗手指回车键。修复是禁用 ajax 函数,因为它正在发布回调,使用参数值重做 URL 并定义窗口位置,而不是发出 ajax 调用。它现在按预期工作。呼!!

            $('.main-attributes').on('shown.bs.popover', function () {
            $('.submit').click(function () {
                var fromval = $('.popover #fromvalue').val();
                var toval = $('.popover #tovalue').val();
                var option = {
                    url: "/Home/LoanCount?dStart=" + fromval + "&" + "dEnd=" + toval,
                    data: JSON.stringify({ dStart: fromval, dEnd: toval }),
                    method: 'post',
                    dataType: 'json',
                    contentType: 'application/json;charset=utf-8'
                };
    
                window.location.href = option.url;
    
                $('.main-attributes').popover('hide');
            });
    
            $('.cancel').click(function () {
                $('.main-attributes').popover('hide');
            });
        });
    

    控制器:

            public ActionResult LoanCount(DateTime dStart, DateTime dEnd)
        {
            int iStart = (dStart.Year * 10000) + (dStart.Month * 100) + dStart.Day;
            int iEnd = (dEnd.Year * 10000) + (dEnd.Month * 100) + dEnd.Day;
    
            var json = Models.LoanCount.getCountStats (iStart, iEnd);
            var data = JsonConvert.DeserializeObject<List<Models.LoanCount>> (json);
    
            ViewBag.jData = json;
    
            return View ("~/Views/Home/LoanCount.cshtml");
        }
    

    【讨论】:

      猜你喜欢
      • 2014-03-06
      • 2011-04-24
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多