• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET中MVC传递数据的几种形式总结

    本文实例讲述了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);
      UpdateModelBook>(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程序设计有所帮助。

    您可能感兴趣的文章:
    • SpringMVC实现前端后台交互传递数据
    • ASP.NET MVC从控制器传递数据到视图的四种方式详解
    • springMVC框架下JQuery传递并解析Json数据
    • Spring MVC 学习 之 - URL参数传递详解
    • jsp 显示springmvc modelmap传递的对象详细介绍
    • SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
    • Ruby on Rails中MVC结构的数据传递解析
    • ASP.NET中MVC从后台控制器传递数据到前台视图的方式
    • 使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
    • MVC页面之间参数传递解析
    上一篇:ASP.NET中readonly与const的区别详解
    下一篇:ASP.NET中Form表单不可以嵌套使用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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