При использовании formsauthentication нажатие кнопки срабатывает в другом методе действия
Моя структура проекта MVC5 выглядит следующим образом:::
Project - App_Data - App_Start - Controllers - AccountController.cs - HomeController.cs - Views - Account - Index.cshtml - Home - Index.cshtml - web.config - Global.asax - Web.config
В вид -и GT; учетная запись -&ГТ; индекс.cshtml по странице входа, чей взгляд сейчас:
<body> <div> @using (Html.BeginForm("Login", "Account", FormMethod.Post)) { <p> from Account </p> <input type="submit" value="Post" /> } </div> </body>
Код AccountController-это:
public class AccountController : Controller { // GET: Account public ActionResult Index() { return View(); } [HttpPost] [AllowAnonymous] public ActionResult Login() { if (true) //assuming validation is true { FormsAuthentication.RedirectFromLoginPage("test", false); } return View(); } }
Как ни странно, когда я нажимаю на кнопку Post(), которая находится под формой POST, она попадает в точку останова в контроллере в методе Index() вместо Login().
Файл Web.config для formsauthentication-это:::
<system.web> <authentication mode="Forms"> <forms loginUrl="~/Account/Index" defaultUrl="~/Home/Index" > <credentials passwordFormat="Clear"></credentials> </forms> </authentication> <authorization> <deny users="?"/> </authorization> <compilation debug="true" targetFramework="4.6.1"/> <httpRuntime targetFramework="4.6.1"/> </system.web>
Сейчас я не понимаю поведения MVC. Почему это происходит???
Что я уже пробовал:
Если я не украшу [AllowAnonymous], никакого поста не будет. Я удалил аутентификацию форм, и она работала нормально.
F-ES Sitecore
Вы уверены, что он не выполняет действие Post, а затем действие Index? Код В Post перенаправляется на действие Index, поэтому он всегда будет переходить в Index после Post.