ASP.NET MVC3数据绑定到VIEW的方式
1、 指定页面数据的强类型Module
数据类型是强类型,编译时报错,运行效率高
Action:
public ActionResult Index()
{
var _instructors = new List<Instructor>(
new Instructor[]
{
new Instructor
{
Name = "Nimane1",
TwitterHandler = "@fasdd",
HtmlDescription = "This"
}
, new Instructor
{
Name = "Nimane2",
TwitterHandler = "@fasdd",
HtmlDescription = "This"
}
}
);
ViewBag.Message = "Welcome to ASP.NET MVC!";
return this.View(_instructors);
}
View:
@using MvcApplication1.Models
@model IEnumerable<Instructor>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@ViewBag.Message</h2>
<div>
@foreach (var item in Model)
{
@Html.Partial("InstructorView", item)
}
</div>
InstructorView:
@model MvcApplication1.Models.Instructor
<fieldset>
<legend>Instructor</legend>
<div class="display-label">
Name</div>
<div class="display-field">
@Model.Name
</div>
<div class="display-label">
TwitterHandler</div>
<div class="display-field">
@Model.TwitterHandler
</div>
<div class="display-label">
HtmlDescription</div>
<div class="display-field">
@Html.Raw(@Model.HtmlDescription)</div>
</fieldset>
<p>
@Html.ActionLink("Edit", "Edit", new { })
@Html.ActionLink("Back to list", "Index")
</p>
2、 使用ViewData绑定到页面
数据类型是object,运行时报错,在 页面中需要对数据进行显示转换,运行效率低
Action:
public ActionResult ViewData ()
{
List<string> colors = new List<string>(
new string[]
{
"red","green","blue"
}
);
ViewData["listColors"] = colors;
ViewData["dateNow"] = DateTime.Now;
ViewData["name"] = "Nicoles";
ViewData["age"] = 24;
return this.View();
}
View:
<div>
<p>section for viewdata display:</p>
<p>my name is :
<b>@ViewData["name"]</b>
<b>@ViewData["age"]</b> years old.
<br/>
I like the colors:
</p>
<ul id="colors">
@foreach (var color in ViewData["listColors"] as List<string>)
{
<li>
<font color="@color">@color</font>
</li>
}
<li></li>
</ul>
</div>
3、 使用ViewBag绑定到页面
数据类型是dynamic,运行时报错,运行效率中
public ActionResult ViewBag()
{
List<string> colors = new List<string>(
new string[]
{
"red","green","blue"
}
);
ViewBag.ListColors = colors;
ViewBag.DateNow = DateTime.Now;
ViewBag.Name = "Nicoles";
ViewBag.Age = 24;
return this.View();
}
View:
<div>
<p>section for viewbag display:</p>
<p>my name is :
<b>@ViewBag.Name</b>
<b>@ViewBag.Age</b> years old.
<br/>
I like the colors:
</p>
<ul id="colors_a">
@foreach (var color in @ViewBag.ListColors)
{
<li>
<font color="@color">@color</font>
</li>
}
<li></li>
</ul>
</div>