首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >'/‘应用程序中的服务器错误。找不到资源。ASP.NET MVC

'/‘应用程序中的服务器错误。找不到资源。ASP.NET MVC
EN

Stack Overflow用户
提问于 2013-12-12 15:47:46
回答 3查看 6.9K关注 0票数 0

我使用的是ASP.NET MVC 4 C夏普,我有这个错误

'/‘应用程序中的服务器错误。 找不到资源。描述: HTTP 404。您正在寻找的资源(或其依赖项之一)可能已被删除、名称更改或暂时不可用。请检查以下URL并确保其拼写正确。

请求URL: /ClerkBooking/ConfirmBooking/22

在我的控制器里我有:

代码语言:javascript
运行
复制
  [HttpPost]
    [ValidateAntiForgeryToken]
    [Authorize(Roles = "Booking Clerk")]
    public ActionResult ConfirmBooking(int id = 0)
    {
       if (ModelState.IsValid)
       {
            //Find the booking
            Booking booking = db.Bookings.Find(id);

            //Get RoomID of Preferred Room.
            int roomId = Convert.ToInt32(db.Rooms.Find(booking.PreferredRoom));

            //Set RoomID of Booking.
            booking.RoomId = roomId;

            //Save Changes.
            db.SaveChanges();
        }

        return View("Index");
    }

所以我不知道为什么它找不到方法,即使它在正确的地方。任何帮助都会很好!谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-12-12 15:51:21

操作链接@Html.ActionLink("Confirm Booking", "ConfirmBooking", new {id = booking.BookingId})将发出一个GET请求,但是您在操作上添加了一个[HttpPost]属性。

您可能希望将链接设置为表单post中的按钮,而不是操作链接。

下面是一个例子:

代码语言:javascript
运行
复制
@using (Html.BeginForm("ConfirmBooking", "ClerkBooking", new { id = booking.BookingId }))
{
    <input type="submit" value="Confirm Booking" />
}
票数 2
EN

Stack Overflow用户

发布于 2013-12-12 15:53:56

是否将AntiForgeryToken添加到html文件中?

代码语言:javascript
运行
复制
@using (Html.BeginForm("Manage", "Account")) {
    @Html.AntiForgeryToken()
}

如果不是这样的话,可能是asp.net mvc阻塞了您的控制器。

还不要忘记使用参数检查您的Global.asax:

代码语言:javascript
运行
复制
   public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "ClerkBooking", action = "ConfirmBooking", id = UrlParameter.Optional } // Parameter defaults
            );

        }

否则,必须从外部声明id对象。

代码语言:javascript
运行
复制
 $.ajax("/ClerkBooking/ConfirmBooking/?id=22", {
            type: "POST",
            contentType: "application/json; charset=utf-8",
            success: function (result) {

               //Do Something

                }
            }
        }).fail(function () {
                         //Do Something
        });
票数 0
EN

Stack Overflow用户

发布于 2013-12-12 15:57:24

确保您的控制器名为"ClerkBooking“,并从方法中删除[HttpPost]装饰。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20547926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档