一、数据展示

1、View代码:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<%@ Import Namespace="MvcApplication1.Models" %>

<!DOCTYPE html>

<html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title>Main</title>
</head>
<body> <table style="width: 100%; text-align: center;" cellspacing="" cellpadding="" border="">
<tr style="background-color:navy;color:white;">
<td>序号</td>
<td>用户名</td>
<td>密码</td>
<td>昵称</td>
<td>性别</td>
<td>生日</td>
<td>民族</td>
<td>班级</td>
</tr> <%
List<Users> ulist = new UsersData().Select();
foreach (Users u in ulist)
{
%>
<tr>
<td><%=u.ids %></td>
<td><%=u.username %></td>
<td><%=u.password %></td>
<td><%=u.nickname %></td>
<td><%=u.sex %></td>
<td><%=u.birthday %></td>
<td><%=u.nation %></td>
<td><%=u.@class %></td>
</tr>
<%} %>
</table> </body>
</html>

View视图展示页面

2、页面展示

3、属性扩展 性别、生日、民族、班级

代码:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<%@ Import Namespace="MvcApplication1.Models" %>

<!DOCTYPE html>

<html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title>Main</title>
</head>
<body> <table style="width: 100%; text-align: center;" cellspacing="" cellpadding="" border="">
<tr style="background-color:navy;color:white;">
<td>序号</td>
<td>用户名</td>
<td>密码</td>
<td>昵称</td>
<td>性别</td>
<td>生日</td>
<td>民族</td>
<td>班级</td>
</tr> <%
List<Users> ulist = new UsersData().Select();
foreach (Users u in ulist)
{
%>
<tr>
<td><%=u.ids %></td>
<td><%=u.username %></td>
<td><%=u.password %></td>
<td><%=u.nickname %></td>
<td><%=Convert.ToBoolean(u.sex)?"男":"女" %></td>
<td><%=Convert.ToDateTime(u.birthday).ToString("yyyy年MM月dd日") %></td>
<td><%=u.Nation1.nationname %></td>
<td><%=u.Class1.classname %></td>
</tr>
<%} %>
</table> </body>
</html>

View视图展示页面

页面展示:

二、添加数据

1、设置<添加>按钮

代码:

<a href="/Home/Insert">添加</a>

2、Home控制器下Insert动作代码:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<!DOCTYPE html>

<html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title>Insert</title>
</head>
<body>
<h1>添加新用户</h1>
<span>用户名:</span><input type="text" /><br />
<span>密码:</span><input type="text" /><br />
<span>确认密码:</span><input type="text" /><br />
<span>昵称:</span><input type="text" /><br />
<span>性别:</span><input type="text" /><br />
<span>生日:</span><input type="text" /><br />
<span>民族:</span><input type="text" /><br />
<span>班级:</span><input type="text" /><br />
<input type="submit" value="添加" />
</body>
</html>

Home控制器下Insert动作的代码

页面展示:

3、<添加>按钮代码 提交按钮所在的form表单

action:提交到的服务端

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<!DOCTYPE html>

<html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title>Insert</title>
</head>
<body>
<form action="/Hoome/Insert1" method="post">
<h1>添加新用户</h1>
<span>用户名:</span><input type="text" name="username" /><br />
<span>密码:</span><input type="text" name="password" /><br />
<span>确认密码:</span><input type="text" name="password1" /><br />
<span>昵称:</span><input type="text" name="nickname" /><br />
<span>性别:</span><input type="text" name="sex" /><br />
<span>生日:</span><input type="text" name="birthday" /><br />
<span>民族:</span><input type="text" name="nation" /><br />
<span>班级:</span><input type="text" name="class" /><br />
<input type="submit" value="添加" />
</form>
</body>
</html>

form表单提交数据

控制器下动作代码:

//向数据库添加数据并跳转页面
public ActionResult Insert1(string username, string password, string nickname, string sex, string birthday, string nation, string @class)
{
Users u = new Users();
u.username = username;
u.password = password;
u.nickname = nickname;
u.sex = Convert.ToBoolean(sex);
u.birthday = Convert.ToDateTime(birthday);
u.nation = nation;
u.@class = @class; using (Data0928DataContext con = new Data0928DataContext())
{
con.Users.InsertOnSubmit(u);
con.SubmitChanges();
} return RedirectToAction("Main", "Home");
}

接收form提交的数据,向数据库添加数据,并重新定向

三、删除数据(地址栏传值)

1、添加“删除”操作列

<tr>
<td><%=u.ids %></td>
<td><%=u.username %></td>
<td><%=u.password %></td>
<td><%=u.nickname %></td>
<td><%=Convert.ToBoolean(u.sex)?"男":"女" %></td>
<td><%=Convert.ToDateTime(u.birthday).ToString("yyyy年MM月dd日") %></td>
<td><%=u.Nation1.nationname %></td>
<td><%=u.Class1.classname %></td>
<td><a href="/Home/Delete?Duname=<%=u.username %>">删除</a></td>
</tr>

添加“删除”操作列

2、控制器动作代码

//删除数据并重新定向
public ActionResult Delete()
{
string UName = Request["Duname"]; using (Data0928DataContext con = new Data0928DataContext())
{
Users u = con.Users.Where(r => r.username == UName).FirstOrDefault();
if (u != null)
{
con.Users.DeleteOnSubmit(u);
con.SubmitChanges();
}
} return RedirectToAction("Main", "Home");
}

删除数据并重新定向

3、弹出提示框

<td><a href="/Home/Delete?Duname=<%=u.username %>" onclick="return confirm('确定要删除吗?')">删除</a></td>

四、修改数据(路由传值+ViewBag传值)

1、路由传值 - 从view界面传一个值到控制器下的动作中,值为string类型

<a href="/Home/Update/<%=u.username %>">修改</a>

2、ViewBag传值 - 从动作将数据传递到View层中进行绑定,值为任意类型

//查询到数据,用ViewBag带到界面进行绑定
public ActionResult Update(string id)
{
Users u=null;
using (Data0928DataContext con = new Data0928DataContext())
{
u = con.Users.Where(r => r.username == id).FirstOrDefault();
}
ViewBag.UUser = u;
return View();
}

ViewBag传值

3、View层绑定数据 记得引用命名空间

<body>
<%
Users u = ViewBag.UUser as Users;
%> <form action="/Home/Update1" method="post">
<h1>添加新用户</h1>
<span>用户名:</span><input type="text" name="username" readonly="readonly" value="<%=u.username %>" /><br />
<span>密码:</span><input type="text" name="password" value="<%=u.password %>" /><br />
<span>昵称:</span><input type="text" name="nickname" value="<%=u.nickname %>" /><br />
<span>性别:</span><input type="text" name="sex" value="<%=u.sex %>" /><br />
<span>生日:</span><input type="text" name="birthday" value="<%=u.birthday %>" /><br />
<span>民族:</span><input type="text" name="nation" value="<%=u.nation %>" /><br />
<span>班级:</span><input type="text" name="class" value="<%=u.@class %>" /><br />
<input type="submit" value="确认修改" />
</form>
</body>

view层ViewBag绑定数据

4、<确认修改>按钮代码

//form表单提交数据,自动组对象,需要name属性值与字段名完全一致
public ActionResult Update1(Users u)
{
Users uu = u;
using (Data0928DataContext con = new Data0928DataContext())
{
Users uuu = con.Users.Where(r=>r.username==u.username).FirstOrDefault();
uuu.password = uu.password;
uuu.nickname = uu.nickname;
uuu.sex = uu.sex;
uuu.birthday = uu.birthday;
uuu.nation = uu.nation;
uuu.@class = uu.@class; con.SubmitChanges();
} return RedirectToAction("Main","Home");
}

form提交数据,自动组对象后重新定向

五、登录页面及状态保持

1、新建控制器 UserLoginController ,并添加登录页面视图,系统是在Views文件夹中自动生成一个新文件夹

2、登录界面代码

<body>
<form action="/UserLogin/Login1" method="post">
<h2>用户登录</h2>
用户名:<input type="text" name="UserName" /><br />
密&nbsp;码:<input type="password" name="Pwd" /><br />
<input type="submit" value="登录" />
</form>
</body>

登录界面view代码

登录按钮执行控制器下动作

//登录
public ActionResult Login1(string UserName, string Pwd)
{
Users u = null;
using (Data0928DataContext con = new Data0928DataContext())
{
u = con.Users.Where(r => r.username == UserName && r.password == Pwd).FirstOrDefault();
}
if (u == null)
{
return RedirectToAction("Login", "UserLogin");
} return RedirectToAction("Main", "Home");
}

<登录>按钮

3、状态保持 - cookies

Response.Cookies["UserName"].Value = UserName;
return RedirectToAction("Main", "Home");

在主页面进行判断是否Cookies为空,若为空跳回登录页面,若不为空则展示主页面内容

public ActionResult Main()
{
if (Request["UserName"] == null)
{
return RedirectToAction("Login","UserLogin");
} return View();
}

判断登录是否为空

4、退出登录

//<退出>按钮
public ActionResult Exit()
{
Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(-);
return RedirectToAction("Login","UserLogin");
}

<退出>登录

5、登录失败提示

控制器下登录动作添加一个session赋值

//登录
public ActionResult Login1(string UserName, string Pwd)
{
Users u = null;
using (Data0928DataContext con = new Data0928DataContext())
{
u = con.Users.Where(r => r.username == UserName && r.password == Pwd).FirstOrDefault();
}
if (u == null)
{
Session["LoginIsOk"] = "";
return RedirectToAction("Login", "UserLogin");
} Response.Cookies["UserName"].Value = UserName;
return RedirectToAction("Main", "Home");
}

若Session为0则账户名或密码错误,若为Null则不提示

view页面进行判断

 <%
if (Session["LoginIsOk"] != null)
{
%>
<span style="color: red;">用户名或密码错误!</span>
<%
Session["LoginIsOk"] = null;
}
%>

判断一次结束就赋空值

c#-MVC基础操作-数据的展示及增删改、登录页面及状态保持的更多相关文章

  1. MYSQL基础操作之单表的增删改查

    一.添加数据. -- 1.创建表,并插入一定的数据. CREATE TABLE STUDENT( ID INT, USERNAME ), SERVLET INT, JSP INT, ADDRESS ) ...

  2. MVC基础操作

    C#-MVC基础操作-数据的展示及增删改.登录页面及状态保持一.数据展示1.View代码: <%@Page Language="C#" Inherits="Syst ...

  3. 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建

    salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建   VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...

  4. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  5. 五 Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  6. JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能

    JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id="productDg"></table> &l ...

  7. mvc模式jsp+servel+dbutils oracle基本增删改查demo

    mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址

  8. mvc模式jsp+servel+jdbc oracle基本增删改查demo

    mvc模式jsp+servel+jdbc oracle基本增删改查demo 下载地址

  9. 搭建ssm框架,可实现登录和数据展示以及增删改查

    需求: 后台使用ssm(spring-springMVC-mybatis)进行整合 前台使用bootstrap框架 前后台交互使用Ajax进行发送 表结构: 登录页面后显示所有用户信息,可对每条进行增 ...

随机推荐

  1. 最多有k个不同字符的最长子字符串 · Longest Substring with at Most k Distinct Characters(没提交)

    [抄题]: 给定一个字符串,找到最多有k个不同字符的最长子字符串.eg:eceba, k = 3, return eceb [暴力解法]: 时间分析: 空间分析: [思维问题]: 怎么想到两根指针的: ...

  2. 在 Ruby 中执行 Shell 命令的 6 种方法

    我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb & ...

  3. 可跨平台C++开源图形图像框架:openFrameworks

    博客参考:https://www.hahack.com/codes/openframeworks-intro/#%E4%BB%80%E4%B9%88%E6%98%AF-openframeworks 和 ...

  4. Mybatis之整体描述

    Mybatis在我看来最大的用处就是封装了jdbc,设置参数操作和获取解析结果集.同时控制了数据库链接等操作,大部分采用了反射来映射javabean对象来进行数据库操作. 1.接下来先整体介绍下主要的 ...

  5. Web图片编辑控件升级日志-Xproer.ImageEditor

    版权所有 2009-2014 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com 产品首页:http://www.ncmem.com/webplug/image-e ...

  6. C# WebApi 过滤器的使用开发接口必备利器

    在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...

  7. 23 DesignPatterns学习笔记:C++语言实现 --- 1.5 Prototype

    23 DesignPatterns学习笔记:C++语言实现 --- 1.5 Prototype 2016-07-21 (www.cnblogs.com/icmzn) 模式理解

  8. win32多线程-异步(asynchronous) I/O

    I/O设备是个慢速设备,无论打印机.调制解调器,甚至硬盘,与CPU相比都奇慢无比,坐下来干等I/O的完成是一件不甚明智事情. 异步(asynchronous) I/O在win32多线程程序设计中被称为 ...

  9. Zabbix部署与使用

    *******需要配置网易YUM源来安装相关依赖包: [local_yum] name=local_yum baseurl=http://mirrors.163.com/centos/6/os/x86 ...

  10. Oracle EBS Patch Demo

    Oracle EBS APP & DB 打补丁过程简述l例子: 打 Patch#   11843100:R12.CAC.B 打PATCH之前先查询一下是否已经有了这个PATCH. SELECT ...