2013-08-03 78 views
1

我有一個帶有「忘記密碼」的登錄頁面,該鏈接使用<a>標籤創建,href屬性爲@Url.Action("ForgotPassword", "Login", new { Area = "Admin" }),出於某種原因,該鏈接將我引向登錄頁面而不是ForgotPassword頁面。MVC @ Url.Action指向錯誤的操作?

有沒有人有一個線索,爲什麼這是?我一直在調查,並發現我的項目沒有什麼奇怪的。

另一個注意:我的登錄控制器上的「索引」操作被擊中,但「忘記密碼」操作從來沒有。

這裏的ForgotPassword行動:

[HttpGet] 
public ActionResult ForgotPassword() 
{ 
    return View(); 
} 
+0

你可以告訴你忘記密碼? –

+0

另外,生成的鏈接是什麼?您提到該鏈接會指引您登錄頁面,但並未提及鏈接是否生成不正確。 –

+0

您沒有在控制器上指定[授權]屬性? – WannaCSharp

回答

0

事實證明我的問題是由我的BaseController.cs引起的,這是我所有其他控制器繼承的原因。由於我修復了錯誤的驗證邏輯,它正在重定向到登錄名。

謝謝大家的合理建議。

0

這個問題是不是在@ Url.Action。這是因爲您拒絕訪問此操作。可能是您的登錄控制器上有[授權]屬性。如果你不想刪除[授權]屬性,你可以讓你的web.config行動:

<configuration> 
    ... 

    <location path="Login/ForgotPassword"> 
     <system.web> 
      <authorization> 
       <allow users="*" /> 
      </authorization> 
     </system.web> 
    </location> 

... 
</configuration> 
+0

「位置」項不是「configSections」組的有效部分。 – Kehlan

+0

@keyCrumbs對不起。它直接在中。我編輯了我的答案 –

+0

謝謝!我會給它一個鏡頭。 – Kehlan

0

如果在Login控制器[Authorize]屬性,移動它,並把它放在你希望用戶可以行動訪問誰isAuthorized

+0

我在每個登錄操作中都有'[AllowAnonymous]'屬性。我還使用自定義屬性進行授權,「[MyAuthorize]」。我還可以確認這些操作沒有被授權,因爲在調試時'MyAuthorizeAttribute.cs'永遠不會被命中。 – Kehlan