2017-02-15 45 views
0

我有這樣的形式RetrievePassword.cshtmlC#的Visual Studio後期形式去不同的路線

@using (Html.BeginForm("SendPassword", "Users", FormMethod.Post)) 
{ 
    <input type="text" name="email" /> 
    <button type="submit" name="submit" class="btn btn-primary">Submit</button> 
} 

有了這個我UsersController:

[AllowAnonymous] 
public ActionResult RetrievePassword() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult SendPassword(string email) 
{ 
    System.Diagnostics.Debug.WriteLine("SendPassword POST"); 
    return null; 
} 

但是,當我點擊的形式提交按鈕,該網頁嘗試導航到/ Accounts/Login,其URL爲localhost:58893/Account/Login?ReturnUrl=%fUsers%2SendPassword。帳戶控制器存在,但沒有登錄方法。但是,如果我刪除用戶控制器中的SendPassword方法,則會得到正確的Users/SendPassword URL,但當然沒有任何內容顯示,因爲沒有附加方法或視圖。

任何想法爲什麼它試圖導航到Account/Login而不是Users/SendPassword?或者爲什麼只有當我刪除控制器中的方法時URL纔是正確的?

回答

1

您的SendPassword操作不包括像上面那樣的[AllowAnonymous]屬性。

由於您目前的設置,ASP.NET正試圖通過將您發送到帳戶/登錄路徑來驗證您的身份。

如果您需要發佈到SendPassword行動而不被驗證的能力,在[使用AllowAnonymous]屬性添加到它,以及像這樣:

[AllowAnonymous, HttpPost] 
public ActionResult SendPassword(string email) 
+0

太謝謝你了!這工作 – KBouldin9