国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET中MVC傳遞數(shù)據(jù)的幾種形式總結(jié)

2024-07-10 13:29:28
字體:
供稿:網(wǎng)友

這篇文章主要介紹了ASP.NET中MVC傳遞數(shù)據(jù)的幾種形式,以實例形式較為詳細(xì)的分析總結(jié)了MVC數(shù)據(jù)傳遞的相關(guān)技巧與注意事項,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了ASP.NET中MVC傳遞數(shù)據(jù)的幾種形式。分享給大家供大家參考。具體如下:

在Asp.net mvc開發(fā)中,Controller需要向View提供Model,然后View將此Model渲染成HTML。這篇文章介紹三種由Controller向View傳遞數(shù)據(jù)的方式,實現(xiàn)一個DropDownList的顯示。

第一種:ViewData

ViewData是一個Dictionary。使用非常簡單,看下面代碼:

 

 
  1. public ActionResult ViewDataWay(int id) 
  2. Book book =bookRepository.GetBook(id); 
  3. ViewData["Countries"] = new SelectList(PhoneValidator.Countries, book.Country); 
  4. return View(book); 

在View中使用下面代碼取值:

 

 
  1. <div class="editor-field"
  2. <%= Html.DropDownList("Country", ViewData["Countries"] as SelectList) %> 
  3. <%: Html.ValidationMessageFor(model => model.Country) %> 
  4. </div> 

上面代碼使用as將它轉(zhuǎn)換成SelectList。

處理POST代碼如下:

 

 
  1. [HttpPost] 
  2. public ActionResult ViewDataWay(int id, FormCollection collection) 
  3. Book book = bookRepository.GetBook(id); 
  4. UpdateModel<Book>(book); 
  5. bookRepository.Save(book); 
  6. return RedirectToAction("Details"new { id=id}); 

第二種:ViewModel

使用ViewModel的方式,我們先創(chuàng)建一個BookViewModel,代碼如下:

 

 
  1. public class BookViewModel  
  2. {  
  3. public Book Book  
  4. {  
  5. get;  
  6. set;  
  7. }  
  8. public SelectList Countries 
  9. get; 
  10. set; 
  11. public BookViewModel(Book book) 
  12. Book = book; 
  13. Countries = new SelectList(PhoneValidator.Countries,book.Country); 

在控制器的Aciton使用ViewModel存放數(shù)據(jù)的代碼如下:

 

 
  1. public ActionResult ViewModelWay(int id) 
  2. Book book = bookRepository.GetBook(id); 
  3. return View(new BookViewModel(book)); 

在View中,這種方式比第一種方式好在:它支持智能感應(yīng)。

效果和第一種方式一樣。

第三種:TempData

使用TempData和使用ViewData方法是一樣的。

Action代碼如下:

 

 
  1. public ActionResult TempDataWay(int id) 
  2. Book book = bookRepository.GetBook(id); 
  3. TempData["Countries"] = new SelectList(PhoneValidator.Countries, book.Country); 
  4. return View(book); 

View取值的代碼如下:

 

 
  1. <div class="editor-field"
  2. <%= Html.DropDownList("Country", TempData["Countries"] as SelectList) %> 
  3. <%: Html.ValidationMessageFor(model => model.Country) %> 
  4. </div> 

效果:第一種方式一樣。

TempData和ViewData的區(qū)別

做個簡單的測試看下看下TempData和ViewData的區(qū)別

 

 
  1. public ActionResult Test1()  
  2. {  
  3. TempData["text"] = "1-2-3";  
  4. ViewData["text"] = "1-2-3";  
  5. return RedirectToAction("Test2");  
  6. public ActionResult Test2() 
  7. string text1 = TempData["text"] as string; 
  8. string text2 = ViewData["text"] as string; 
  9. return View(); 

RedirectToAction跳轉(zhuǎn)Action后,ViewData的值已經(jīng)被清空,而TempData沒有被清空,這是它們的區(qū)別之一。

希望本文所述對大家的asp.net程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 婺源县| 台山市| 濮阳市| 溧阳市| 寿宁县| 化德县| 太仆寺旗| 张家口市| 梅州市| 昌黎县| 辽阳市| 金寨县| 牟定县| 大港区| 乌拉特后旗| 延边| 高邑县| 深州市| 张北县| 临安市| 三河市| 沐川县| 十堰市| 甘谷县| 沂源县| 五大连池市| 沈阳市| 平和县| 枣庄市| 永川市| 萨嘎县| 高清| 怀宁县| 定边县| 右玉县| 鄂伦春自治旗| 大安市| 南投市| 石狮市| 黎平县| 阳泉市|