今天遇到两个问题,第一个是跨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传数据的更多相关文章

  1. apiCloud中api.ajax方法跨域传参获取数据

    apiCloud中的ajax方法,可以自动处理跨域访问数据,不必使用jsonp来处理了. 使用ajax方法,必须要在apiready = function() {}方法中 获取参数 var pageP ...

  2. 关于试用jquery的jsonp实现ajax跨域请求数据的问题

    我们在开发过程中遇到要获取另一个系统数据时,就造成跨域问题,这就是下文要说的解决办法: 先我们熟悉下json和jsonp的区别: 使用AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交 ...

  3. HTML5 postMessage 跨域交换数据

    前言 之前简单讲解了利用script标签(jsonp)以及iframe标签(window.name.location.hash)来跨域交换数据,今天我们来学习一下HTML5的api,利用postMes ...

  4. 利用window.name+iframe跨域获取数据详解

    详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...

  5. Android中实现跨app之间数据的暴露与接收

    例如一个小项目:实现单词本的添加单词等功能 功能:不同的方式实现跨app之间数据的暴露与接收 暴露端app:实现单词的添加(Word.Translate),增删改查: 接收端app:模糊查询,得到暴露 ...

  6. Vue用axios跨域访问数据

    Vue用axios跨域访问数据axios是vue-resource的替代品,vue-resource不再维护.安装axios:npm install axios使用vue-cli开发时,由于项目本身启 ...

  7. iframe 跨域问题解决方案 利用window.name+iframe跨域获取数据详解

    详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...

  8. android中用Intent传数据,如果用传递的是一个类,就将类实现Parcelable接口

    Parcelable,内存单位,跨进程使用,或者intent传递对象的时候使用.android中用Intent传数据,如果用传递的是一个对象,就将对象实现Parcelable接口,而不是将对象序列化. ...

  9. Zabbix监控实现跨区域跨网络监控数据

    Zabbix监控实现跨区域跨网络监控数据 环境: 公司现有服务器10台,其中5台服务器有一台安装了zabbix,并且这5台服务器处于一个网络,只有一台服务器有公网ip, 另外的5台处于另一个网络,仅有 ...

随机推荐

  1. 资料推荐--Google Java编码规范

    之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的 ...

  2. Nginx系列2之Nginx+php

    preface 公司所有的大多数业务都泡在LNMP平台上,所以对PHP+Nginx有点了解,那么就做个小小的总结吧. what's FastCGi FastCGI是一个可伸缩,高速的在HTTP ser ...

  3. 谈谈 ES6 的 Promise 对象

    https://segmentfault.com/a/1190000002928371 前言 开篇首先设想一个日常开发常常会遇到的需求:在多个接口异步请求数据,然后利用这些数据来进行一系列的操作.一般 ...

  4. 纯css3实现旋转的太极图

    效果图: 代码如下: <!DOCTYPE html> <html> <head lang="zh"> <meta charset=&quo ...

  5. python学习笔记-(二)python入门

    1.第一个python程序 1.1 直接打印输出 打开cmd,输入python进入到python交互式环境:(看到>>>是在Python交互式环境下:) 在python交互环境下输入 ...

  6. LDA(主题模型算法)

    LDA整体流程 先定义一些字母的含义: 文档集合D,topic集合T D中每个文档d看作一个单词序列< w1,w2,...,wn >,wi表示第i个单词,设d有n个单词.(LDA里面称之为 ...

  7. centos 查看是32位还是64位

    查看linux机器是32位还是64位的方法: file /sbin/init 或者 file /bin/ls/sbin/init: ELF 64-bit LSB executable, x86-64, ...

  8. 多日期选择jQuery插件 MultiDatesPicker for jQuery UI

    Multiple-Dates-Picker-for-jQuery-UI是一个多日期选择的jquery控件.   GIT源码: https://github.com/dubrox/Multiple-Da ...

  9. JavaScript学习笔记——运算符和表达式

    javascript运算符 一.运算符和操作数的组合就称为表达式. 二.javascript运算符 (一) 算术运算符 + - * / % var++ ++var var-- --var A. + ( ...

  10. ansible执行playbook时间显示的python脚本

    import datetime import os import time from ansible.plugins.callback import CallbackBase class Callba ...