ASP.NET中MVC传递数据的几种形式总结
程序员文章站
2024-02-14 10:59:58
本文实例讲述了asp.net中mvc传递数据的几种形式。分享给大家供大家参考。具体如下:
在asp.net mvc开发中,controller需要向view提供model...
本文实例讲述了asp.net中mvc传递数据的几种形式。分享给大家供大家参考。具体如下:
在asp.net mvc开发中,controller需要向view提供model,然后view将此model渲染成html。这篇文章介绍三种由controller向view传递数据的方式,实现一个dropdownlist的显示。
第一种:viewdata
viewdata是一个dictionary。使用非常简单,看下面代码:
public actionresult viewdataway(int id) { book book =bookrepository.getbook(id); viewdata["countries"] = new selectlist(phonevalidator.countries, book.country); return view(book); }
在view中使用下面代码取值:
<div class="editor-field"> <%= html.dropdownlist("country", viewdata["countries"] as selectlist) %> <%: html.validationmessagefor(model => model.country) %> </div>
上面代码使用as将它转换成selectlist。
处理post代码如下:
[httppost] public actionresult viewdataway(int id, formcollection collection) { book book = bookrepository.getbook(id); updatemodel<book>(book); bookrepository.save(book); return redirecttoaction("details", new { id=id}); }
第二种:viewmodel
使用viewmodel的方式,我们先创建一个bookviewmodel,代码如下:
public class bookviewmodel { public book book { get; set; } public selectlist countries { get; set; } public bookviewmodel(book book) { book = book; countries = new selectlist(phonevalidator.countries,book.country); } }
在控制器的aciton使用viewmodel存放数据的代码如下:
public actionresult viewmodelway(int id) { book book = bookrepository.getbook(id); return view(new bookviewmodel(book)); }
在view中,这种方式比第一种方式好在:它支持智能感应。
效果和第一种方式一样。
第三种:tempdata
使用tempdata和使用viewdata方法是一样的。
action代码如下:
public actionresult tempdataway(int id) { book book = bookrepository.getbook(id); tempdata["countries"] = new selectlist(phonevalidator.countries, book.country); return view(book); }
view取值的代码如下:
<div class="editor-field"> <%= html.dropdownlist("country", tempdata["countries"] as selectlist) %> <%: html.validationmessagefor(model => model.country) %> </div>
效果:第一种方式一样。
tempdata和viewdata的区别
做个简单的测试看下看下tempdata和viewdata的区别
public actionresult test1() { tempdata["text"] = "1-2-3"; viewdata["text"] = "1-2-3"; return redirecttoaction("test2"); } public actionresult test2() { string text1 = tempdata["text"] as string; string text2 = viewdata["text"] as string; return view(); }
redirecttoaction跳转action后,viewdata的值已经被清空,而tempdata没有被清空,这是它们的区别之一。
希望本文所述对大家的asp.net程序设计有所帮助。
上一篇: 深入反射生成数组的详解
推荐阅读
-
ASP.NET中MVC传递数据的几种形式总结
-
ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
-
mvc form表单提交的几种形式整理总结
-
ASP.NET中MVC传递数据的几种形式总结
-
解决Asp.net Mvc返回JsonResult中DateTime类型数据格式问题的方法
-
spring 整合 mybatis 中数据源的几种配置方式(总结篇)
-
总结Visual Studio下ASP.NET模板化控件中的数据绑定
-
解决Asp.net Mvc返回JsonResult中DateTime类型数据格式问题的方法
-
spring 整合 mybatis 中数据源的几种配置方式(总结篇)
-
总结Visual Studio下ASP.NET模板化控件中的数据绑定