ASP.NETにおけるMVC伝達データのいくつかの形式のまとめ

2954 ワード

この例ではASPについて述べる.NETのMVCはデータのいくつかの形式を伝達します.皆さんの参考にしてください.具体的には以下の通りです.
Asp.Netmvcの開発では、ControllerはViewにModelを提供し、ViewはこのModelをHTMLにレンダリングする必要があります.この記事では、ControllerからViewにデータを転送する3つの方法を紹介し、DropDownListの表示を実現します.
1つ目: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で次のコードを使用して値を取ります.

model.Country) %>

上のコードはasを使用してSelectListに変換されます.
処理POSTコードは以下の通りである.

[HttpPost]
public ActionResult ViewDataWay(int id, FormCollection collection)
{
  Book book = bookRepository.GetBook(id);
  UpdateModel(book);
  bookRepository.Save(book);
  return RedirectToAction("Details", new { id=id});
}


2つ目: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では、スマートセンサーをサポートする第1の方法よりも優れています.
効果は最初の方法と同じです.
3つ目:TempData
TempDataを使用する方法とViewDataを使用する方法は同じです.
アクションコードは次のとおりです.

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


Viewの値のコードは次のとおりです.

model.Country) %>

効果:最初の方法は同じです.
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はクリアされません.これが違いの1つです.
皆さんのaspについてお話ししたいと思います.Netプログラミングが役立ちます.