控制器和视图数据交互的实战:实现用户登录
我们学习了控制器和视图后,接下来我们一起学习结合模型,实现MVC的联动操作。
创建数据库,库名ShoppingTest:
步骤一:打开SQL Server,对数据库右键,选择新建数据库,按着下图操作:

步骤二:创建用户表user,流程如下:
注意的是:创建的表id是主键,需要右键设置。以及设置id为标识列(可以实现自动累加id值)

对id右键“属性”设置id为标识列。

最后按ctrl+s保存表,表名命名为user。
步骤三:刷新表,才能看到表在这里。

步骤四:对user表右键,编辑前20条数据。
打开得到下图的表结构,再添加数据到表中。

相关的数据库文件将会贴在最后,可以根据自己的情况选择下载。
在项目中的Models使用数据库对象
步骤一:对Models文件夹右键新建项,然后按下面的步骤设置EF对象,对象里面的命名需要为数据库的库名。

步骤二:选择第一个再下一步。

步骤三:选择新建数据库

步骤四:配置数据库信息

结果如下:

步骤五:选择表结构:

使用表结构:

得到下面结果代表成功:

控制器的登录方法创建:
LoginController.cs新增方法代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FirstProject.Models; //先使用模型命名空间
namespace FirstProject.Controllers
{
public class LoginController : Controller
{
//数据库访问对象
private ShoppingTestEntities db = new ShoppingTestEntities();
//新增登录页
public ActionResult indexback()
{
return View();
}
//通过方法参数接收视图数据时,不会区分是POST请求还是GET请求,都可以获取参数
[HttpPost]
public ActionResult indexback(string username,string pwd)
{
//1、数据校验
if (string.IsNullOrEmpty(username))
{
ViewBag.error = "用户名不能为空!";
}else if (string.IsNullOrEmpty(pwd))
{
ViewBag.error = "密码不能为空!";
}
else
{
//2、数据都不为空时,直接操作访问数据库查询用户信息
user u = db.user.FirstOrDefault(p=>p.username == username && p.pwd == pwd);
if(u == null)
{
ViewBag.error = "用户名或密码错误!";
}
else
{
//登录成功 =》 跳转到Home/UserList 展示用户列表
return Redirect("/Home/UserList");
}
}
return View();
}
}
}需要注意的是,上面代码需要自己补充到LoginController.cs才能运行。
对应的视图代码indexback.cshtml代码如下:
@{
ViewBag.Title = "用户登录";
}
<h2>用户登录</h2>
<div class="row">
<div class="col-lg-12">
<form action="" method="post">
<p>
用户名: <input type="text" name="username" value="" />
</p>
<p>
密码: <input type="password" name="pwd" value="" />
</p>
<p>
<input type="submit" name="name" value="登录" />
</p>
<p style="color:red;">
@ViewBag.error
</p>
</form>
</div>
</div>运行效果:

登录失败:

登录成功:

这节课就到此结束了,自己尝试的按上面的要求练习如何创建数据库,添加Models对象,最后实现控制器的创建、视图页面的添加、实现登录操作吧!
附件:数据库SQL脚本的代码,直接复制过去到SQL Server执行即可得到结果。
USE [master]
GO
/****** Object: Database [ShoppingTest] Script Date: 2023/4/10 16:35:16 ******/
CREATE DATABASE [ShoppingTest] ON PRIMARY
( NAME = N'ShoppingTest', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\ShoppingTest.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
LOG ON
( NAME = N'ShoppingTest_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\ShoppingTest_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [ShoppingTest].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [ShoppingTest] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [ShoppingTest] SET ANSI_NULLS OFF
GO
ALTER DATABASE [ShoppingTest] SET ANSI_PADDING OFF
GO
ALTER DATABASE [ShoppingTest] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [ShoppingTest] SET ARITHABORT OFF
GO
ALTER DATABASE [ShoppingTest] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [ShoppingTest] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [ShoppingTest] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [ShoppingTest] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [ShoppingTest] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [ShoppingTest] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [ShoppingTest] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [ShoppingTest] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [ShoppingTest] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [ShoppingTest] SET DISABLE_BROKER
GO
ALTER DATABASE [ShoppingTest] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [ShoppingTest] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [ShoppingTest] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [ShoppingTest] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [ShoppingTest] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [ShoppingTest] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [ShoppingTest] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [ShoppingTest] SET RECOVERY FULL
GO
ALTER DATABASE [ShoppingTest] SET MULTI_USER
GO
ALTER DATABASE [ShoppingTest] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [ShoppingTest] SET DB_CHAINING OFF
GO
EXEC sys.sp_db_vardecimal_storage_format N'ShoppingTest', N'ON'
GO
USE [ShoppingTest]
GO
/****** Object: Table [dbo].[user] Script Date: 2023/4/10 16:35:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[user](
[id] [int] IDENTITY(1,1) NOT NULL,
[username] [varchar](50) NOT NULL,
[pwd] [varchar](50) NOT NULL,
[power] [smallint] NOT NULL,
[nickname] [varchar](50) NOT NULL,
CONSTRAINT [PK_user] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[user] ON
INSERT [dbo].[user] ([id], [username], [pwd], [power], [nickname]) VALUES (1, N'123', N'123', 1, N'王虎')
INSERT [dbo].[user] ([id], [username], [pwd], [power], [nickname]) VALUES (2, N'1232', N'12345', 0, N'陈明')
INSERT [dbo].[user] ([id], [username], [pwd], [power], [nickname]) VALUES (3, N'1231', N'1234', 1, N'陈潇')
INSERT [dbo].[user] ([id], [username], [pwd], [power], [nickname]) VALUES (4, N'1233', N'12344', 0, N'陈敏')
INSERT [dbo].[user] ([id], [username], [pwd], [power], [nickname]) VALUES (5, N'1231', N'12355', 1, N'王明明')
SET IDENTITY_INSERT [dbo].[user] OFF
GO
USE [master]
GO
ALTER DATABASE [ShoppingTest] SET READ_WRITE
GO
毕设系统定制、课程教学、问题1对1远程解答,可联系村长QQ:330168885
需要购买本课才能留言哦~