동적 형식 뷰와 강력한 형식 뷰
ASP.NET MVC 3에서는 컨트롤러(controller)에서 뷰(View)로 정보를 전달할 때 3가지 방법을 사용할 수 있습니다.
- 강력한 형식 모델 객체(strongly typed model object)를 사용
- 동적 형식(dynamic type)을 사용 : @model dynamic 코드를 사용합니다.
- ViewBag을 사용
다음 예제는 동적 형식 뷰(dynamic type view)와 강력한 형식 뷰(strongly typed view)를 비교하고 대조하기 위해 작성된 MVC 3 TOP Blog 응용 프로그램입니다.
컨트롤러는 간단한 블로그 목록을 만드는 것으로 시작하고 있습니다.
using System.Collections.Generic;
using System.Web.Mvc;
namespace Mvc3ViewDemo.Controllers {
public class Blog {
public string Name;
public string URL;
}
public class HomeController : Controller {
List<Blog> topBlogs = new List<Blog>
{
new Blog { Name = "ScottGu", URL = "http://weblogs.asp.net/scottgu/"},
new Blog { Name = "Scott Hanselman", URL = "http://www.hanselman.com/blog/"},
new Blog { Name = "Jon Galloway", URL = "http://www.asp.net/mvc"}
};
public ActionResult IndexNotStonglyTyped() {
return View(topBlogs);
}
public ActionResult About() {
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
}
}
IndexNotStonglyTyped() 메서드에서 마우스 오른쪽 클릭을 하고 뷰 추가(Add View)를 선택합니다.

출처 : http://i1.asp.net/umbraco-beta-media/3008187/WindowsLiveWriter_Dynamicv.StronglyTypedViews_E5CA_8475.NotStronglyTypedView.png
강력한 형식의 뷰 만들기(Create a strongly-typed view )의 체크 박스가 체크되지 않아 있는 것을 확인하세요. 추가(Add) 버튼을 누르면 생성된 페이지로 이동되며, 약간의 코드가 자동으로 생성되어 있는 걸 확인할 수 있습니다.
@{
ViewBag.Title = "IndexNotStonglyTyped";
}
<h2>IndexNotStonglyTyped</h2>
On the first line of the Views\Home\IndexNotStonglyTyped.cshtml file,
add the model directive and the dynamic keyword.
이번 예제는 동적 뷰를 사용하고 있기 때문에, 인텔리센스(intellisense)의 지원은 받을 수 없습니다. 완성된 코드는 다음과 같습니다.
@model dynamic
@{
ViewBag.Title = "IndexNotStonglyTyped";
}
<h2>Index Not Stongly Typed</h2>
<p>
<ul>
@foreach (var blog in Model) {
<li>
<a href="@blog.URL">@blog.Name</a>
</li>
}
</ul>
</p>

출처 : http://i1.asp.net/umbraco-beta-media/3008199/WindowsLiveWriter_Dynamicv.StronglyTypedViews_E5CA_6646.NotStronglyTypedView.png
이번에는 강력한 형식의 뷰를 추가해 보도록 하겠습니다. 다음의 코드를 컨트롤러에 추가하세요.
public ActionResult StonglyTypedIndex() {
return View(topBlogs);
}
강력한 형식 뷰가 아닐 때 즉, 동적 형식 뷰일 때와 동일한 반환 코드( return View(topBlogs); )가 사용된 것에 주목할 필요가 있습니다. StonglyTypedIndex() 메서드에서 마우스 오른쪽 클릭을 하고, 뷰 추가(Add View)를 선택하세요. 이번에는 [강력한 형식의 뷰 만들기]에 체크 박스를 체크하고, 모델 클래스로 Blog (Mvc3ViewDemo.Controllers)를 선택합니다. 그리고, 스케폴드 템플릿(Scaffold template)은 List을 선택합니다.

출처 : http://i1.asp.net/umbraco-beta-media/3008211/WindowsLiveWriter_Dynamicv.StronglyTypedViews_E5CA_5658.StrongView.png
강력한 형식의 뷰 템플릿 안에서는 인텔리센스의 지원을 받을 수 있습니다.

출처 : http://i1.asp.net/umbraco-beta-media/3008223/WindowsLiveWriter_Dynamicv.StronglyTypedViews_E5CA_7002.intellesince.png
여기를 클릭하시면 C#프로젝트를 다운로드 받을 수 있습니다.