当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET中MVC传递数据的几种形式总结

ASP.NET中MVC传递数据的几种形式总结

2017年12月12日  | 移动技术网IT编程  | 我要评论

乒乓家园,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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网