用MVC和EF模型写一个登录注册功能
时间: 2024-04-30 09:25:01 浏览: 10
好的,下面是一个简单的登录注册功能的示例:
首先,需要创建一个 ASP.NET MVC 项目,并引入 Entity Framework。以下是代码示例:
在 Models 文件夹下创建一个名为 User 的模型类:
```csharp
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
```
接着,在 DbContext 中添加 DbSet<User> 属性:
```csharp
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<User> Users { get; set; }
}
```
在 Controllers 文件夹下创建一个名为 AccountController 的控制器,添加以下方法:
```csharp
public class AccountController : Controller
{
private readonly ApplicationDbContext _context;
public AccountController(ApplicationDbContext context)
{
_context = context;
}
public IActionResult Register()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new User { Username = model.Username, Password = model.Password };
_context.Users.Add(user);
await _context.SaveChangesAsync();
return RedirectToAction("Login");
}
return View(model);
}
public IActionResult Login()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel model)
{
var user = await _context.Users.FirstOrDefaultAsync(u => u.Username == model.Username && u.Password == model.Password);
if (user != null)
{
// 登录成功
return RedirectToAction("Index", "Home");
}
ModelState.AddModelError("", "用户名或密码不正确");
return View(model);
}
}
```
其中,Register 和 Login 方法分别用于显示注册和登录的页面;Register 和 Login 的 HttpPost 版本用于处理表单提交。
接着,在 Views 文件夹下创建一个名为 Account 的文件夹,添加以下视图:
Register.cshtml:
```html
@model RegisterViewModel
<h2>注册</h2>
<form asp-action="Register" method="post">
<div class="form-group">
<label for="username">用户名</label>
<input type="text" class="form-control" id="username" name="Username" value="@Model.Username" required>
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="password" class="form-control" id="password" name="Password" value="@Model.Password" required>
</div>
<button type="submit" class="btn btn-primary">注册</button>
</form>
```
Login.cshtml:
```html
@model LoginViewModel
<h2>登录</h2>
<form asp-action="Login" method="post">
<div class="form-group">
<label for="username">用户名</label>
<input type="text" class="form-control" id="username" name="Username" value="@Model.Username" required>
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="password" class="form-control" id="password" name="Password" required>
</div>
<button type="submit" class="btn btn-primary">登录</button>
</form>
```
最后,在 ViewModel 文件夹下创建两个名为 RegisterViewModel 和 LoginViewModel 的视图模型类:
```csharp
public class RegisterViewModel
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
public class LoginViewModel
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
```
以上就是一个简单的登录注册功能的实现。当用户注册时,会将用户名和密码保存到数据库中;当用户登录时,会从数据库中查找是否有匹配的用户记录。如果有,则登录成功,否则显示错误消息。