2017-02-15 11 views
0

Я имею эту форму в RetrievePassword.cshtml:C# 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. Контроллер учетной записи существует, но метода входа нет. Тем не менее, я получаю правильный URL-адрес Users/SendPassword, если я удаляю метод SendPassword в Контроллере пользователей, но, конечно, ничего не появляется, так как нет способа или представления.

Любые идеи, почему он пытается перейти на Account/Login вместо Users/SendPassword? ИЛИ почему URL-адрес правильный, только если я удаляю метод в контроллере?

ответ

1

Ваше действие SendPassword не включает атрибут [AllowAnonymous], подобный приведенному выше.

Из-за вашей текущей настройки ASP.NET пытается аутентифицировать вас, отправив вас на учетную запись/логин.

Если вам нужна возможность POST к действию SendPassword без проверки подлинности, добавьте [AllowAnonymous] атрибут к нему, а так:

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

Спасибо так много! Это сработало – KBouldin9