2013-12-12 96 views
0

我正在使用ASP.NET MVC 4 C夏普和我有這個錯誤'/'應用程序中的服務器錯誤。資源無法找到。 ASP.NET MVC

'/'應用程序中的服務器錯誤。

無法找到該資源。說明:HTTP 404.可能已刪除 正在查找的資源(或其某個依賴項), 的名稱已更改或暫時不可用。請查看 以下網址並確保其拼寫正確。

請求的URL:/ ClerkBooking/ConfirmBooking/22

在我的控制,我有:

[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"); 
    } 

所以林不知道爲什麼它沒有找到方法,即使它在正確的位置。任何幫助將是偉大的!謝謝!

+0

而我的鏈接是:​​@ Html.ActionLink( 「確認訂單」, 「ConfirmBooking」,新{ID = booking.BookingId}) – ASPCoder1450

+1

更重要的是:你ConfirmBooking控制器有一個索引視圖? – Maess

+0

你的ActionLink中有些東西不對。我不相信您的控制器名稱或方法名稱是Confirm Booking。有2個單獨的字 –

回答

2

您的操作鏈接@Html.ActionLink("Confirm Booking", "ConfirmBooking", new {id = booking.BookingId})將發出GET請求,但您在該操作中添加了[HttpPost]屬性。

您可能希望將鏈接設置爲表單帖子內的按鈕而不是操作鏈接。

下面是一個例子:

@using (Html.BeginForm("ConfirmBooking", "ClerkBooking", new { id = booking.BookingId })) 
{ 
    <input type="submit" value="Confirm Booking" /> 
} 
0

正在增加你的AntiForgeryToken到您的HTML文件?

@using (Html.BeginForm("Manage", "Account")) { 
    @Html.AntiForgeryToken() 
} 

如果沒有,那麼可能asp.net的MVC阻止到達您的控制器。

另外別忘了用參數來檢查您的Global.asax:

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對象。

$.ajax("/ClerkBooking/ConfirmBooking/?id=22", { 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      success: function (result) { 

       //Do Something 

       } 
      } 
     }).fail(function() { 
         //Do Something 
     }); 
+0

AntiForgeryToken確認後發生在請求中,它不會導致404。 –

0

確保您的控制器被稱爲「ClerkBooking」,並從方法中刪除[HttpPost]裝飾。

+0

我不會建議。 'HttpPost'應該用於修改數據的操作。 –

相關問題