MVC中使用Tuple完成匿名类数据存储
使用MVC时,会遇到从Controller传递到View的数据只是某几个表中的几个字段的数据,有很多人都会想到能否把这几个字段组成一个匿名类传到View,但是这样好像行不通,所以有些时候我们会针对这几个字段来创建一个Model,方便数据的正确传递,但是这会使得Model越来越多,很多人都不喜欢这么做,那有没有其他方法解决这个问题呢?
这里给大家介绍一种方法:
使用System.Tuple来实现,该类是一个静态类,提供了一些用于创建元组对象的静态方法,这个就不多了,大家可以自己去查看下元数据就知道了,很简单的。
接下了看下使用方法:
Controller代码:
public ActionResult TupleTest()
{
LinqDBEntities db = new LinqDBEntities();
dynamic data = db.StuInfo.ToList().Select(s => Tuple.Create(s.StuNum, s.StuName, s.StuAge,s.StuSex, s.ClassID));
ViewData["data"] = data;
return View();
}
在Controller中把要传递的数据通过Tuple.Create封装数据
<%
dynamic dd = ViewData["data"];
foreach (var item in dd)
{
Response.Write(item.Item1+"-"+item.Item2+"-"+item.Item3+"-"+item.Item4+"-"+item.Item5+"<br>");
}
%>
在View中可以拿到封装的数据。
注意:Tuple.Create最多支持8个参数,但是有时候我们的字段不止8个,我们可以使用Tuple嵌套,例如:
Tuple.Create(s.StuNum, s.StuName, s.StuAge,s.StuSex, s.ClassID,s.StuNum,Tuple.Create(s.StuName,s.StuAge))
但是嵌套以后在,代码的清晰度就会降低,所以建议大家如果字段过多可以考虑创建专门的Model类
有时需要在ASP.Net MVC4的视图的@model中使用多个类型的实例,.NET Framework 4.0版本引入的System.Tuple类可以轻松满足这个需求。
假设Person和Product是两个类型,如下是控制器代码。
using System;
using System.Web.Mvc;
namespace Razor.Controllers
{
public class HomeController : Controller
{
Razor.Models.Product myProduct = new Models.Product { ProductID = 1, Name = "Book"};
Razor.Models.Person myPerson = new Models.Person { PersonID = "1", Name = "Jack" };
public ActionResult Index()
{
return View(Tuple.Create(myProduct,myPerson)); // 返回一个Tuple对象,Item1代表Product、Item2代表Person
}
}
}
如下是视图Index.cshtml的代码
@model Tuple<Razor.Models.Product, Razor.Models.Person>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Model.Item1.Name
</div>
</body>
</html>
转载于:https://www.cnblogs.com/lgx5/p/5676405.html
MVC中使用Tuple完成匿名类数据存储相关推荐
- 使用ExposedObject对Asp.net MVC中匿名类型的JsonResult做单元测试
返回JsonResult是MVC中的常见返回值类型,而且简单方便的方式是结合匿名类型一起使用. 比如: public ActionResult PreviewEmail() {--return Jso ...
- 如何使用 C# 中的 Tuple
开局一张图,首先声明的是 Tuple 不是什么新鲜概念,在编程语言 F#,Python 中早就有这个了,Tuple 是一种 有序的,有限不可变的,支持混杂类型的固定个数的 一种数据结构,有些朋友可能就 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(2)
在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...
- ASP.NET MVC中controller和view相互传值的方式
ASP.NET MVC中Controller向view传值的方式: ViewBag.ViewData.TempData 单个值的传递 Json 匿名类型 ExpandoObject Cookie Vi ...
- ASP.NET MVC教程五:ASP.NET MVC中的路由
一.概述 在ASP.NET MVC架构中,控制器在3大核心构件中处于中心地位,通过控制器支配模型和视图,然而从浏览器发出的请求到控制器还需要路由的协助,路由将特定的请求和控制器的动作对应起来. 在AS ...
- 论MVVM伪框架结构和MVC中M的实现机制
一直都有人撰文吹捧MVVM应用开发框架,文章把MVVM说的天花乱坠并且批评包括iOS和android所用的MVC经典框架.这篇文章就是想给那些捧臭脚的人们泼泼冷水,虽然有可能招致骂声一片,但是目的是给 ...
- 网址路由Routing组件如何在mvc中生成网址
一.摘要 本篇文章从基础到深入的介绍ASP.NET MVC中的Routing组件. Routing翻译过来是"路由选择", 负责ASP.NET MVC的第一个工作:识别URL, 将 ...
- Asp.Net MVC中身份认证和授权
MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供了三种方式,其中最常用的就是我们的Form认证,需要配置相应的信息.例如下面的配置信息: < ...
- ASP.NET MVC中的身份验证
传统的登录验证方式,是通过将用户的登录状态信息保存在服务端的Session中,再利用客户端浏览器的Cookie保存SessionID,这样浏览器每次在向服务端发起请求时,都会携带该Cookie值,服务 ...
- MVC 中的 ViewModel
此文章总结自:http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applica ...
最新文章
- Spring Data JPA 常用注解
- 【Paper】2021_Consensus Control of Leader-Following Multi-Agent Systems in Directed Topology
- 人工机器:基于视觉的机械手控制
- 腾讯云云机安装dockers
- 吴孟达肝癌逝世:肝被透支的全过程曝光!
- web前端学习笔记(二)---Django
- YFI创始人旗下多链跨链平台multichain.xyz即将投入使用
- C#笔记(一):类型,泛型,集合
- 高级操作系统——XV6内存管理
- [免费专栏] ATTACK安全之Android ICMP隧道攻击原理与入侵检测实践
- 求最大公约数和最小公倍数的做法(Java实现)
- 欧创芯原装OC 6700B升压型恒流驱动芯片,智能过温保护,内置 VDD 稳压管
- sublime html代码自动排版,sublime Text3 如何自动排版代码
- ElasticSearch创建索引映射文档+IK分词器
- Emakefile--快速编译
- cydia java_利用Cydia Substrate进行Android JAVA HOOK
- 电源防反接和防倒灌 - 使用MOS 管和运放实现理想二极管
- 项目管理知识体系指南(九)项目沟通管理
- ps人物素描及黑白上色
- Mac开不了机怎么办?