登录表单中的提交按钮不适用于我的基于 ASP Net MVC 的注册和登录应用程序.注册工作,但登录时遇到一些问题



我的登录操作有问题。登录表单中的提交按钮不起作用。注册操作成功将数据存储在数据库中,但我的登录操作有问题。我正在登录操作中获取数据,但我认为它不起作用。我不知道原因。

----模型-----

public class User
{
public int UserID { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string Confirmpassword { get; set; }
public string mobile { get; set; }
public string Gender { get; set; }
}

--数据库上下文----

namespace MVC_Boostrap.Models
{
public class Projectdatacontext : DbContext
{
public DbSet<User> Users { set; get; }
}
}

------控制器------

public ActionResult Login( User user)
{
User u = p1.Users.FirstOrDefault(Users => Users.Email == user.Email && Users.Password == Users.Password);
if (u != null)
{
ViewBag.Message = "Successfully Login";
return View();
}
else
{
ViewBag.Message = "Enter Correct Email and Password";
return View();
}
//return RedirectToAction("Welcome", u);
}

---注册操作-------------

[HttpPost]
public ActionResult Signup( User user)
{
try
{
p1.Users.Add(user);
p1.SaveChanges();
ViewBag.Message = "Signup Succesfully";
//return RedirectToAction("Welcome", user);
}
catch(Exception ex)
{
ViewBag.Message = "Signup error:" + ex.ToString();
}
return View();
}

-------------登录视图-------------------------

@model MVC_Boostrap.Models.User
@{
ViewBag.Title = "Login";
}
<body>
<div class="container" style="margin-top:20px;">
<div class="row">
<div class="col-md-4">
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h4 class="card-title">Login Form</h4>
@if (ViewBag.Message != null)
{
<div class="alert alert-primary">@ViewBag.Message</div>
}
<div class="form-group">
@Html.Label("Email ID:")
@Html.TextBoxFor(Model => Model.Email, new { @Placeholder = "Please Enter Email-ID", @class = "form-control", @type = "email" })
</div>
<div class="form-group">
@Html.Label("Password :")
@Html.TextBoxFor(Model => Model.Password, new { @Placeholder = "Please enter your Passoword", @class = "form-control", @type = "password" })
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Login</button>  //this button does not perform anythng
</div>
</div>
<div class="card-footer">
New Users Signup <a href="#">Here</a>
</div>
</div>
</div>
<div class="col-md-4">
</div>
</div>
</div>
</body>

浏览器控制台和 Visual Studio 中没有错误消息。

您在登录视图中的问题是您的输入元素不在任何<form>元素内,因此当您单击提交按钮时,浏览器真的不知道将数据发送到哪里,因此它只是通过点击登录的HttpGet操作将您返回到同一屏幕。要解决此问题,只需执行

@using(Html.BeginForm("Login","ControllerName")){ //code inside here }

现在转到您的控制器,您也遇到了一个问题,即您的登录操作没有用HttpPost属性装饰,因此当单击提交按钮时,将点击默认的HttpGet登录操作。只是一个类似于您必须执行的注册操作的小更改

[HttpPost]
public ActionResult Login(User user) { //code inside here }

这个答案解释了当你用HttpPost属性装饰你的动作时会发生什么。

最新更新