MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下:
来源:互联网 发布:编程语言排行榜2017 8 编辑:程序博客网 时间:2024/05/16 07:02
MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下:
一、Controller----------->View
1、ViewData
获取或设置一个字典,其中包含在控制器和视图之间传递的数据。使用ViewData是采用键值对的形式,对所定义的数据进行传递。在View中会自动识别到拥有唯一键值的ViewData,并将数据显示出来。
例子:
public
ActionResult()
{
List<Models.BlogArticle> list = (from d
in
db.BlogArticles where d.AIsDel ==
false
select d).ToList();
//2将集合数据传给视图
// ViewBag.DataList = list;//viewBag形式
//利用viewdata形式
ViewData[
"DataList"
] = list;
return
View();
}
视图中接收:
<
table
id
=
"tbList"
>
<
tr
>
<
th
>id</
th
>
<
th
>标题</
th
>
<
th
>分类</
th
>
<
th
>状态</
th
>
<
th
>时间</
th
>
<
th
>操作</
th
>
</
tr
>
<!--遍历Action方法,设置给ViewData的集合数据,生成html代码-->
@foreach (BlogArticle a in ViewData["DataList"] as List<
BlogArticle
>)
{
<
tr
>
<
td
>@a.AId </
td
>
<
td
>@a.ATitle </
td
>
<
td
>@a.ACate</
td
>
<
td
>@a.AStatu </
td
>
<
td
>@a.AUpdatetime </
td
>
<
td
>@a.AContent </
td
>
<
td
>
<
a
href
=
"javascript:del(@a.AId)"
>删</
a
>
<
a
href
=
"/home/modify/@a.AId"
>改</
a
>
</
td
>
</
tr
>
}
</
table
>
2、ViewBag
获取视图包,允许自定义属性进行赋值,属于动态类型(dynamic),以ViewBag.属性=属性值得方式进行传值,其实这里跟ViewData的使用原理类似。
例子:
public
ActionResult Index()
{
ViewBag.Title=
"Hello!"
;
}
视图中接收
<h1>ViewBag.Title</h1>
3、其他方式
在从controller向view传值时,除了以上两种方式外,还包括一些链接的方式,例如页面跳转的方式RedirectToAction,还有RenderAction等自动接收等方式。
二、从View-------->Controller
1、其实在这种情况下,通常会选择利用ajax来通过get或者post进行提交。如果采用最原始的JS来做,就要用到之前总结的ajax经典的五步工作法了,但是通常我们采用JQuery封装好的ajax提交方式。
即$.ajax({type,url,data,success:function(){})其中最常用的就是这几个参数属性了。
2、通过Get方式+路由配置+id值进行提交数据
<
td
>
<
a
href
=
"javascript:del(@a.AId)"
>删</
a
></
td
>
JS:
<script type=
"text/javascript"
>
function
del(id) {
if
(confirm(
"您确定要删除吗?亲~~"
)) {
window.location =
"/home/del/"
+ id;
//通过get方式采用路由配置+id的形式
}
}
</script>
三、Action---------->Action
前面两种传值方式都是在view和Controller之间进行数据传递,那么如果某一个业务需要用到后台的两个Action,并且需要再这两个Action之间进行数据传递,这时需要用到另一个概念TempData:获取要传递到视图的临时数据.使用时,需要注意TempData的生命周期,只在第一次请求Action时临时数据存在,之后自动变为NULL,具体的使用与ViewData相同,属于键值对的数据字典类。
public
ActionResult Index()
{
this
.TempData[
"str"
]=
"wyy"
;
return
View();
}
public
ActionResult Index2()
{
string
name=
this
.TempData[
"str"
];
return
Content(name);
}
以上是在学习和实践MVC过程中经常用到的页面传值的几种方式,大的方向看来从C向V数据传递以ViewData为基础,扩展到ViewBag,更加方便快速了。从V到C传递,则归于ajax中的get和post的提交了。
- MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下:
- MVC中Controller与View之间的数据传递
- asp.net MVC前台View页面向后台Controller控制器传递数据的几种方式
- ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结 (来自网络)
- ASP.NET MVC中Controller与View之间的数据传递总结
- MVC- View和Controller之间的传值
- 【Asp.Net MVC】Controller和View之间传递数据
- MVC架构中使用ajax实现view和controller之间值的传递
- Asp.net mvc Controller与 View之间的传递
- view之间传递数据的方式
- ASP.NET MVC3中Controller与View之间的数据传递总结
- ASP.NET MVC3中Controller与View之间的数据传递总结
- .net MVC的controller与view的传值方式
- 【ASP.NET MVC】View与Controller之间传递数据
- 【MVC框架】——View和Controller之间的传值
- notepad++ 行首行尾添加字符
- Maven POM描述参考
- MPEG-2TS码流编辑的原理及其应用
- ICEHOUSE中创建一台虚机的源代码跟踪
- QT 总结(四) 1.中文编码 乱码 2.QFileDialog 打开文件框 3.调用其它UI文件 4.QMessageBox弹窗
- MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下:
- HDOJ 5410 CRB and His Birthday DP背包
- inux重定向及nohup不输出的方法
- mybatis之foreach用法
- 简单路由器的实现
- VMware与主机三种通信方式
- [LeetCode 173] Binary Search Tree Iterator
- Spring 3 JavaConfig @Import example
- springmvc学习笔记(一)第一个helloworld