* 1016. *
В чем может быть проблема? У меня такое ощущение, что это как-то связано с формой: имя контроллера и имя действия , на которое указывает «Логин / Вход», но тогда почему весь путь отображается в URL?
Есть предложения?
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
}
}
Index.cshtml
@{
ViewBag.Title = "Login Portal";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="horizontal-vertical-center">
<ul class="nav nav-pills nav-justified">
<li class="active"><a data-toggle="tab" href="#login">Login</a></li>
<li><a data-toggle="tab" href="#register">Register</a></li>
</ul>
<div class="tab-content">
<div id="login" class="tab-pane fade in active">
@Html.Partial("Login")
</div>
</div>
</div>
Login.cshtml
@model BusinessService.DTO.Activity.UserDTO
@{
Layout = null;
}
@using (Html.BeginForm("Login", "Login", FormMethod.Post, new { @class = "loginForm" }))
{
@Html.AntiForgeryToken() // this is for prevent CSRF attack
<div class="form-group">
@Html.TextBoxFor(a => a.Email, new { @class = "form-control", @placeholder = "Email" })
@Html.ValidationMessageFor(a => a.Email)
</div>
<div class="form-group">
@Html.PasswordFor(a => a.Password, new { @class = "form-control", @placeholder = "Password" })
@Html.ValidationMessageFor(a => a.Password)
</div>
if(ViewBag.ErrorMessage != null)
{
<div class="alert alert-danger" role="alert">
@ViewBag.ErrorMessage
</div>
}
<button type="submit" class="btn btn-primary">Login</button>
}
И, очевидно, главный контроллер, LoginController.cs
using BusinessService.DTO.Activity;
using BusinessService.Services.Interfaces;
using System.Web.Mvc;
using System.Web.Security;
namespace LoginPortal.Controllers
{
public class LoginController : Controller
{
private ILoginService _loginService;
public LoginController(ILoginService loginService)
{
this._loginService = loginService;
}
// GET: Login
[AllowAnonymous]
public ActionResult Index(string ReturnUrl)
{
if (ReturnUrl != "")
TempData["returnUrl"] = ReturnUrl;
return View();
}
public ActionResult Login()
{
if (!Request.IsAjaxRequest())
return RedirectToAction("Index");
return PartialView();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(UserDTO model)
{
if (ModelState.IsValid)
{
var userResult = _loginService.VerifyUser(model);
if (userResult != null)
{
if (!userResult.EmailConfirmed)
return RedirectToAction("ConfirmEmail");
else
{
FormsAuthentication.SetAuthCookie(userResult.Email, false);
Session["User"] = new { userResult.Id, userResult.FullName, userResult.Email };
return Redirect("http://localhost:49770/Admin");
}
}
}
ViewBag.ErrorMessage = "Incorrect Username or Password";
return View("Index");
}
private ActionResult Unauthorized()
{
return View();
}
private ActionResult ConfirmEmail()
{
return View();
}
}
}
Изображения ниже: