You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC点击CheckOut按钮提示资源未找到问题求助

解决ASP.NET MVC中“资源未找到”(/User/addToCartOrderStore)问题

问题场景

开发ASP.NET MVC项目时,点击页面CheckOut按钮尝试打开addToCartOrderStore视图,触发AJAX请求/User/addToCartOrderStore时,出现“Server Error in '/' Application - 资源未找到”错误。相关代码如下:

cartDisplay.cshtml(前端代码)

@{
    ViewBag.Title = "cartDisplay";
}

<h2>Add to Cart Details</h2>

<script src="~/kendo/js/kendo.all.min.js"></script>

<div style="display: inline">
    <div class="text-left">
        <button class='btn btn-group-sm btn-success' onclick='submit()'>CheckOut</button>
    </div>
</div>

<div id="example">
    <br />
    <br />
    <div id="grid"></div>

    <script>
        $(document).ready(function () {
            // 其他代码
        });
      
        function submit() {
            debugger
            $.ajax({
                url: "/User/addToCartOrderStore",
                type: 'GET',
                cache: false,
                contentType: false,
                processData: false,
                success: function (response) {
                    window.location.href = response.redirectToUrl;
                }
            });
        }
    </script>
</div>

UserController.cs(后端代码)

//Shipping Details and order details
[HttpGet]
public ActionResult addToCartOrderStore()
{
    return View();
}

[HttpPost]
public ActionResult addToCartOrderStore(FormCollection sh)
{
    // 业务逻辑代码
}

addToCartOrderStore.cshtml(视图文件)

@{
    ViewBag.Title = "addToCartOrderStore";
}

<h2>AddToCart OrderStore</h2>

<script src="~/kendo/js/kendo.all.min.js"></script>

<br />
<div class="navbar navbar-inverse text-center">
    <div class="container text-center">
        <div class="navbar-collapse collapse text-center">
            <ul class="nav navbar-nav text-center">
                <li>@Html.ActionLink("Logout", "Logout")</li>
            </ul>
        </div>
    </div>
</div>

<form id="form"></form>

<script>
    $(document).ready(function () {
        var today = new Date();
        var maxDate = today.setDate(today.getDate() + 60);

        $("#form").kendoForm({
            layout: "grid",
            grid: {
                cols: 2,
                gutter: 20
            },
            items: [
                {
                    type: "group",
                    label: "Customer Address",
                    items: [
                        {
                            field: "firstname",
                            label: "First Name:",
                            validation: { required: true }
                        },
                        {
                            field: "lastname",
                            label: "Last Name:",
                            validation: { required: true }
                        }
                    ]
                }
            ]
        });
    });
</script>

解决方案

1. 简化跳转逻辑(推荐)

当前AJAX请求完全没必要,因为只是要打开新视图,直接修改submit函数为页面跳转即可:

function submit() {
    window.location.href = "/User/addToCartOrderStore";
}

2. 检查路由配置

确认RouteConfig.cs中的默认路由规则正确,确保/User/addToCartOrderStore能匹配到对应的控制器和方法:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

3. 验证控制器与视图路径

  • 确保控制器类名为UserController,且继承自Controller类,无拼写错误;
  • 确保addToCartOrderStore.cshtml视图文件存放在~/Views/User/目录下,ASP.NET MVC默认会在此路径查找对应控制器的视图。

4. 修复AJAX请求逻辑(若需保留AJAX)

如果必须使用AJAX,需修改控制器返回格式,并调整AJAX参数:

后端修改:

[HttpGet]
public ActionResult addToCartOrderStore()
{
    return Json(new { redirectToUrl = Url.Action("addToCartOrderStore", "User") }, JsonRequestBehavior.AllowGet);
}

前端修改:

function submit() {
    $.ajax({
        url: "/User/addToCartOrderStore",
        type: 'GET',
        cache: false,
        success: function (response) {
            window.location.href = response.redirectToUrl;
        },
        error: function(xhr) {
            console.log(xhr.responseText); // 打印错误详情排查问题
        }
    });
}

注:GET请求无需设置contentType: false和processData: false,这两个参数通常用于上传文件的POST请求。

内容的提问来源于stack exchange,提问作者Rahul Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:35:12