乒乓家园,2017年国家公务员考试报名,杨永信为什么没被判刑
本文实例讲述了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程序设计有所帮助。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论