zoukankan      html  css  js  c++  java
  • C#-MVC-★不同层之间的传值方式★

    方式一:form表单提交(一对一传值)

    例如:

    view层代码:

      action - 数据提交到的服务端(如Home控制器下的Insert动作)

      method - 提交数据的方式(post或get)

      name - 服务端不认id或class等,只认name

    <%@ 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>
    View层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表单提交的数据,向数据库添加数据,重新定向

    方式二:问号传值

    view代码:

    <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>
    添加“删除”操作列

    控制器动作代码

    //删除数据并重新定向
            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");
            }
    删除数据并重新定向

    方式三:路由传值 - 只能传一个值,为string类型,默认名为id

    格式:/控制器/动作/值

    view层代码

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

    控制器下动作代码

    //查询到数据,用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传值 - 从控制器下动作传值到自己的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传值

    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>
    ViewBag数据绑定

    方式五:form表单传值(自动组对象,需要name属性值与字段名完全一致才可以传值)

    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层代码

    控制器下的动作代码

    //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表单传值,自动组对象,修改后重新定向

     

    方式六:强类型数据 - 将某一个或一组数据在控制器传递到视图上去,同ViewBag,数据更稳定,防止多数据传递中出现错误

    return view() 时传值,任意类型

    public ActionResult Update(string id)
            {
                List<Nation> nlist = null;
                Users u = null;
                using (Data0928DataContext con = new Data0928DataContext())
                {
                    u = con.Users.Where(r => r.UserName == id).FirstOrDefault();
                    nlist = con.Nation.ToList();
                }
    
                ViewBag.xixi = nlist;
    
                return View(u);
            }
    强类型传值

    view层接收

      先进行声明类型 - model小写  不需要加分号

    @model Users

      调用

    value="@Model.UserName"

    方式七:TempData - 全局变量,同Sesson,但使用一次后就自动清空

    赋值、取值同Session

    TempData["LoginIsOk"]="0";
  • 相关阅读:
    AttributeError: module 'scipy.misc' has no attribute 'imread'
    3.形态学
    2.几何变换_图像金字塔
    ValueError:Object arrarys cannot be loaded when allow_pickle=False
    2.几何变换_切分合并通道
    2.几何变换_遮挡
    49. Group Anagrams
    151. Reverse Words in a String
    242. Valid Anagram
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/qq450867541/p/6517424.html
Copyright © 2011-2022 走看看