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";
C#-MVC-★不同层之间的传值方式★的更多相关文章
- iOS 浅谈MVC设计模式及Controllers之间的传值方式
1.简述你对MVC的理解? MVC是一种架构设计.它考虑了三种对象:Model(模型对象).View(试图对象).Controller(试图控制器) (1)模型:负责存储.定义.操作数据 (2)视图: ...
- MVC&WebForm对照学习:传值方式
刚从webform开发转到mvc,如果说像路由这样稍微复杂一点的知识点还可以暂时先放一放(前提是默认的路由规则基本满足大部分需求),那有个问题在快速开发中,我想是必须要当即解决的,那就是webform ...
- MVC:Controller向View传值方式总结
Controller向View传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通Vie ...
- vue学习--组件之间的传值方式
1.概述 vue由多个组件构成页面,在不同的组件中有不同的联系,组件之间的传值是十分有必要的 2.父子组件之间传值 --props和$emit 父传子:通过props 方法:子组件:props:['m ...
- vue组件之间的传值方式
一.父组件向子组件传值方式 1.1父组件向子组件传数据方式 <!DOCTYPE html> <html lang="en"> <head> &l ...
- ASP.NET MVC简单流程解释(传值方式)
在上篇笔记里我们创建了一个简单的MVC程序 在view中,@Model指的就是MyFirstMvc.Models.IndexModel,我们的提交页面是/Test/Index,当我们输入完数字并按下提 ...
- mvc.net 的四种传值方式
Control: view:
- 关于viewControllers之间的传值方式
AViewController----Push----BViewController 1.属性 AViewController---pop----BViewController 1.代理 2.通知 ...
- iOS 不同类之间的传值
iOS是面向对象开发的,有很多不同的类,很多时候会遇到类与类之间的"交流"需求,比如通知.传递数值等等,(通知可以用nsnotificationcenter来做, 以后总结)下面主 ...
随机推荐
- c语言伪常量const理解
const是伪常量,无法用于数组的初始化和全局变量的初始化,本质就是限定一个变量不能直接赋值. 如以下代码: #define A 10 int arr[A]; //const本质,伪常量 ,无法用于数 ...
- Golang之一个简单的聊天机器人
翠花,上代码 package main import ( "bufio" "fmt" "os" "strings" ) ...
- 配置Linux防火墙
配置防火墙(服务器安全优化)(转) 安全规划:开启 80 22 端口并 打开回路(回环地址 127.0.0.1) # iptables –P INPUT ACCEPT # iptables –P O ...
- HBase 系列(二)安装部署
HBase 系列(二)安装部署 本节以 Hadoop-2.7.6,HBase-1.4.5 为例安装 HBase 环境.HBase 也有三种模式:本地模式.伪分布模式.分布模式. 一.环境准备 (1) ...
- C语言中的nan和inf使用
本文总结nan和inf在C语言当中的含义.产生和判定方法. C语言当中的nan 表示not a number,等同于 #IND:indeterminate (windows) 产生: 对浮点数进行了未 ...
- Overflow与块状格式上下文
- 数据结构(c语言版)文摘
第一章 绪论 数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科. 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理 ...
- Spring源码解析 - ListableBeanFactory
Extension of the {@link BeanFactory} interface to be implemented by bean factories that can enumerat ...
- REQUEST的TRACE文件
--REQUEST的TRACE文件 SELECT 'Trace Name: ' || DEST.VALUE || '/' || LOWER (DBNM.VAL ...
- 更改SQL Server中默认备份文件夹
当你安装SQL Server时,安装路径一般如下:C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL.在这个目录下也有数据文件的文件夹和备份文件的文 ...