• c#-MVC基础操作-数据的展示及增删改、登录页面及状态保持


    一、数据展示

    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=" 100%; text-align: center;" cellspacing="0" cellpadding="0" border="1">
            <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=" 100%; text-align: center;" cellspacing="0" cellpadding="0" border="1">
            <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(-10);
                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"] = "0";
                    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;
            }
        %>
    判断一次结束就赋空值
  • 相关阅读:
    ORM和JDBC
    四种会话跟踪技术以及jstl介绍
    GC、进程和线程的定义
    数组和链表的理解,及各自的优缺点
    JSP和Servlet及浏览器与tomcat交互过程
    多线程、同步实现方法及Error和Exception的区别与联系
    Eclipse创建一个普通maven项目详细步骤
    Eclipse创建一个动态maven项目详细步骤
    Myeclipse项目出现红叉解决方案
    数据结构和算法 — 平衡二叉树的实现
  • 原文地址:https://www.cnblogs.com/qq450867541/p/6515673.html
Copyright © 2020-2023  润新知