Проблема ошибка входа в ASP MVC
Всем привет,
Я хочу перенаправить пользователя на другую страницу, когда он войдет в систему. Я пробую это решение, но фактическая страница загружается, а не перенаправляется на другую страницу.
Адресная строка содержит новый # в конце.
Это мой код в контроллере :
[HttpPost] public ActionResult Login(FormCollection fc) { int res = dblayer.Admin_Login(fc["Email"], fc["Password"]); if (res == 1) { return View("~/Views/Client/Edit.cshtml"); } else { return View("~/Views/Client/Create.cshtml"); } return View(); }
и это то, что я написал в виду :
<div class="login" id="login"> @*@RenderPage("~/Views/Home/Login.cshtml")*@ <div class="main-w3l"> <div class="w3layouts-main" style="background-image:url('/template/web/images/bg3.jpg'); margin-top:50px;"> <h2>Login Now</h2> @using (Html.BeginForm("Login", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) } <form action="#" method="post"> <input value="E-MAIL" name="Email" type="email" required="" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'E-Mail';}" /> <input value="PASSWORD" name="Password" type="password" required="" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'password';}" /> <span><input type="checkbox" />Remember Me</span> <h6><a href="#">Forgot Password?</a></h6> <div class="clear"></div> <input type="submit" value="login" name="login"> </form> <p>Don't Have an Account ?<a href="#" onclick="@("window.location.href='" + @Url.Action("Create", "Client") + "'") ;">Register Now</a></p> </div> </div><pre lang="HTML">
а это мой db. cs :
public int Admin_Login(string Email, string Password) { using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DeliveryCon"].ConnectionString)) { int res = 0; SqlCommand com = new SqlCommand("SP_Login", con); com.CommandType = CommandType.StoredProcedure; com.Parameters.AddWithValue("@Email", Email); com.Parameters.AddWithValue("@Password", Password); SqlParameter oblogin = new SqlParameter(); oblogin.ParameterName = "@Isvalid"; oblogin.SqlDbType = SqlDbType.Bit; oblogin.Direction = ParameterDirection.Output; com.Parameters.Add(oblogin); con.Open(); com.ExecuteNonQuery(); res = Convert.ToInt32(oblogin.Value); return res; } }
Что я уже пробовал:
проблема сохранялась, когда я пытался протестировать использование Javascfript следующим образом :
HttpPost] public ActionResult Login(FormCollection fc) { int res = dblayer.Admin_Login(fc["Email"], fc["Password"]); if (res == 1) { TempData["msg"] = " Login Successful !"; } else { TempData["msg"] = " Email or Password is wrong !"; } return View(); }
и в виду этого сценария :
@{ if (TempData["msg"] != null) { <script type="text/javascript"> alert('@TempData["msg"]'); </script> } }
F-ES Sitecore
Вы создаете две формы, Html. BeginForm - это форма, и под ней у вас есть явный тег формы, в котором есть ваши поля. Действие этой формы -"#", поэтому, когда форма отправлена, она идет туда.
Вам нужно использовать BeginForm для создания формы, которая подчиняется вашему действию входа в систему.
Вам действительно нужно лучше понять основы MVC, я бы предложил пройти через учебник по музыкальному магазину, чтобы узнать, как работают формы и действия. Google "MVC music store".
Anouar2002
хорошо, спасибо за ответ, да, вы правы, это была ошибка, но когда я ее исправляю, проблема сохраняется
Anouar2002
Теперь это работает ! спасибо