2013-02-02 40 views
2

在新創建的MVC4應用,在賬戶控制器爲什麼我得到這個404錯誤?

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult AdminLogin(AdminLoginModel model, string returnUrl) 
    { 
     if (ModelState.IsValid && WebSecurity.Login("administrator", model.Password, persistCookie: model.RememberMe)) 
     { 
      return RedirectToLocal(returnUrl); 
     } 

     // If we got this far, something failed, redisplay form 
     ModelState.AddModelError("", "The password provided is incorrect."); 
     return View(model); 
    } 

插入此函數,這

public class AdminLoginModel 
{ 
    [Required] 
    [DataType(DataType.Password)] 
    [Display(Name = "Password")] 
    public string Password { get; set; } 

    [Display(Name = "Remember me?")] 
    public bool RememberMe { get; set; } 
} 

放入accountModel.cs。我還創建了一個新的文件AdminLogin.cshtml並將其保留爲空。 在_loginPartial.cshtml文件我插入一個動作鏈接

<li>@Html.ActionLink("Register", "AdminLogin", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>

但是,當我點擊註冊鏈接,然後我看到了404錯誤,指出 /Account/AdminLogin沒有找到。

我錯過了插入那個微小的mvc的方式;你可以幫幫我嗎 ?我是一名mvc初學者。

回答

3

單擊瀏覽器中的鏈接會產生GET請求,但您的操作方法僅適用於POST請求。

添加[HttpGet]屬性或刪除[HttpPost]屬性來解決此特定問題。

一般來說,您將希望在提交數據時繼續使用POST請求。因此,我的建議是改變客戶端使用表單(或使用客戶端邏輯來攔截鏈接點擊操作並使用ajax請求提交數據)。

+0

太棒了!謝謝,在上面的函數中,有'returnUrl';你是否也請解釋我實際上是什麼? –

+0

@BéVúSữa1returnUrl是一個附加參數,指示登錄成功後應該向用戶發送的位置。如果用戶直接訪問受保護的頁面(需要登錄),則可以通過此信息知道他們想要去哪裏,以便在登錄後將它們發送到那裏。 –