跨Controllers传数据
今天遇到两个问题,第一个是跨controller传值,后一个是比较简单的linq数据库查询问题。先描述以下问题我有一个入库单和一个入库明细,入库的逻辑是先填写入库单在填入库明细。两者要么同时完成,要么都不完成。如果未完成写入数据库的数据要删除。当然尼你可以中途取消这次入库。因此为了实现这个功能加了一个链接
@Html.ActionLink("取消该入库单", "Cancel", "CancelStoreInForm"),
CancelStoreInForm是控制器名称,Cancel是控制器中处理的相应函数名。首先分析了一下要么在填入库单时就取消,要么在填入库明细时取消。前者数据没有保存到数据库,不用做任何操作。而后者入库单已经保存到了数据库,需要删除数据。
对于在填入库明细时因为之前的入库单已经保存到了数据库,此时要取消入库就的得删除入库单的数据。问题来了,删哪一条数据?这期间就需要数据传递然而入库单和入库明细有由两个不同的控制器控制。一,从入库单的视图传递入库单号到入库明细控制器。二,直接从入库单控制器传数据单入库明细控制器。经过查阅网上一些资料知道视图控制器之间传递数据有以下三种方式(http://blog.sina.com.cn/s/blog_687960370101cfjh.html):
1、ViewData
只能在一个动作方法中设置,在相关的视图中获取,只对当前视图有效。相当于ViewState
使用方法:
Action中:ViewData["test"] = "test";
视图中:@Html.Encode(ViewData["test"])
在mvc3中已经用ViewBag替代ViewData:
Action中:ViewBag.Test= "test";
视图中:@Html.Encode("Test" )
2、TempData
可以在多个方法或者多个页面中设置、读取。TempData只能在控制器中传递一次,每个元素只能被访问一次,访问后被删除。
TempData实质上是保存在session中,每次读取都是从session中获取并删除。
使用方法:
Action中:TempData["TMessage"] = "测试TempData";
视图中:@TempData["TMessage"]
3、model传递(强类型传递)
model传递数据可以解决强类型数据传递。通过view()方法传递实例化对象到视图中。
Action中:var model = new uerList {new user{name ="name1",age="12"},new user{name="name2",age="23"}};
return View(model);
视图中:@using ~.Models.user 或者@model ~.Models.user
@ foreach( var item in Model ){
@item.name @item.age
}
PS:
传递多个数据对象的方法:
创建一个类,将多数据组合进新类中,在model中传递新类的实例即可。
Model中:public class NewClass{
public Name names{get;set;}
public Saly salys{get;set;}
}
Action中: NewClass nc = new NewClass();
nc.names= userlist;
nc.salys = salysList;
return View(nc);
视图中:@model ~.Models.NewClass
@ foreach( item in model.names) {
@item.~
}
最终经过尝试使用TempData["informno"]这种方法可行,该方法可以控制器向视图传递数据,控制器向控制器传传递数据。
还有一个linq小问题
var storein= db.aaa.SingleOrDefault(a => a.kkk == informno);//查不到可以为空
var storein= db.aaa.Single(a => a.kkk == informno);//必须有唯一的数据,否则引发异常。
跨Controllers传数据的更多相关文章
- apiCloud中api.ajax方法跨域传参获取数据
apiCloud中的ajax方法,可以自动处理跨域访问数据,不必使用jsonp来处理了. 使用ajax方法,必须要在apiready = function() {}方法中 获取参数 var pageP ...
- 关于试用jquery的jsonp实现ajax跨域请求数据的问题
我们在开发过程中遇到要获取另一个系统数据时,就造成跨域问题,这就是下文要说的解决办法: 先我们熟悉下json和jsonp的区别: 使用AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交 ...
- HTML5 postMessage 跨域交换数据
前言 之前简单讲解了利用script标签(jsonp)以及iframe标签(window.name.location.hash)来跨域交换数据,今天我们来学习一下HTML5的api,利用postMes ...
- 利用window.name+iframe跨域获取数据详解
详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...
- Android中实现跨app之间数据的暴露与接收
例如一个小项目:实现单词本的添加单词等功能 功能:不同的方式实现跨app之间数据的暴露与接收 暴露端app:实现单词的添加(Word.Translate),增删改查: 接收端app:模糊查询,得到暴露 ...
- Vue用axios跨域访问数据
Vue用axios跨域访问数据axios是vue-resource的替代品,vue-resource不再维护.安装axios:npm install axios使用vue-cli开发时,由于项目本身启 ...
- iframe 跨域问题解决方案 利用window.name+iframe跨域获取数据详解
详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...
- android中用Intent传数据,如果用传递的是一个类,就将类实现Parcelable接口
Parcelable,内存单位,跨进程使用,或者intent传递对象的时候使用.android中用Intent传数据,如果用传递的是一个对象,就将对象实现Parcelable接口,而不是将对象序列化. ...
- Zabbix监控实现跨区域跨网络监控数据
Zabbix监控实现跨区域跨网络监控数据 环境: 公司现有服务器10台,其中5台服务器有一台安装了zabbix,并且这5台服务器处于一个网络,只有一台服务器有公网ip, 另外的5台处于另一个网络,仅有 ...
随机推荐
- A.Kaw矩阵代数初步学习笔记 6. Gaussian Elimination
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- 数据结构作业——max_and_min(栈)
Description TonyY 最近喜欢上了数学,今天他研究一个只有加号和乘号,运算数为整数, 大小在 1-9 之间的表达式,你可以任意地往里加括号,如何让表达式的值最大或 者最小? Input ...
- [转]vim编辑器---批量注释与反注释
转 在使用vim编写代码的时候,经常需要用到批量注释与反注释一段代码.下面简要介绍其操作. 方法一 块选择模式 插入注释: 用v进入virtual模式 用上下键选中需要注释的行数 按Control+v ...
- iOS - CABasicAnimation
代码实例: [1] - (void)pulseClick { //!> 宽和高等比例转换 CABasicAnimation * pulse = [CABasicAnimation animati ...
- Apache 使用localhost(127.0.0.1)可以访问 但是使用本机IP(局域网)不能访问
- 查看linux机器是32位还是64位的方法
file /sbin/init 或者 file /bin/ls/sbin/init: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dyna ...
- Unity3D PerRendererData
http://nordicedu.com/tkokblog/wordpress/?tag=perrendererdata MaterialPropertyBlock and SpriteRendere ...
- js获取锚点名称 #
var thisId = window.location.hash; alert(thisId); 输出 #2
- System.BadImageFormatException: Could not load file or assembly
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe C:\_PRODUKCIJA\Debug\DynamicHtmlT ...
- Session共享的解决方案
http://www.cnblogs.com/xinhaijulan/archive/2010/08/21/1805116.html Session共享的解决方案 1.客户端SessionID值唯一: ...