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来做, 以后总结)下面主 ...
随机推荐
- 2016年,你读过的最好的IT技术书有哪几本?
def 程序员 原文 https://www.zhihu.com/question/54350343 陈硕 等 54 人赞同了该回答 1 知乎 陈硕大牛的 服务器多线程编程muduo 输的好不好可能更 ...
- qt学习(一) qt安装
QT5现在安装已经方便了许多 相比QT4 可以一路点击到底 无需额外的太多的操作. http://download.qt.io/official_releases/ 下载 1 windows下可以选择 ...
- chorme 浏览器记住密码后input黄色背景处理方法(两种)
使用chrome浏览器选择记住密码的账号,输入框会自动加上黄色的背景,有些设计输入框是透明背景的,需要去除掉这个黄色的背景: 方法1:阴影覆盖 input:-webkit-autofill { - ...
- IndexedDB:浏览器里内置的数据库(转)
出处;http://www.webhek.com/indexeddb/ IndexedDB是HTML5规范里新出现的浏览器里内置的数据库.对于在浏览器里存储数据,你可以使用cookies或local ...
- js去掉字符串前后空格的五种方法(转)
出处:http://www.2cto.com/kf/201204/125943.html 第一种:循环检查替换[javascript]//供使用者调用 function trim(s){ retu ...
- CI框架下的PHP增删改查总结
controllers下的 cquery.php文件 <?php class CQuery extends Controller { //构造函数 function CQuery() { par ...
- 词频统计-part2
看到这个问题为之一愣,这简单多了,在第一部分的基础上把那些存储结构删了,把排序算法删了,设置一个变量,遇到则加一,直到读到文件尾.最后输出单词出现次数. 程序比较简单也比较,下面就把程序贴出来: pa ...
- 开通博客暨注册github事件
(1) 姓 名:丁新宇 学 号:1413042054 班 级:网工142 兴趣爱好:听歌.看书.编代码. (2) GitHub注册流程: 1,百度搜索GitHub,进入官 ...
- Radius 认证协议介绍-兼rfc导读
老规矩, 先看维基: 远端用户拨入验证服务(RADIUS, Remote Authentication Dial In User Service)是一个AAA协议,意思就是同时兼顾验证(authent ...
- 创建TFS团队项目时自动建立代码库的文件夹结构
很多客户都跟我提过一个这样的需求,即需要在创建团队TFS项目时,自动创建起源代码库的文档结构,例如类似下列结构的文件夹: <teamProject> |- DEVELOPMENT ...