一步一步学习ASP.NET MVC 1.0创建NerdDinner 范例程序,Part 9
本文根据《Professional ASP.NET MVC 1.0》中微软牛人Scott Guthrie 提供免费下载的第一章,一步一步演示如何通过ASP.NET MVC 1.0 正式版创建NerdDinner 范例程序。对了解如何使用最新的ASP.NET MVC 1.0框架创建Web Application 非常有帮助。本文由
http://forum.entlib.com 开源论坛小组提供。关于本文的一些资源,请参考文章最后的链接。
前面系列文章:
本文继续学习之旅,一步一步通过ASP.NET MVC 1.0 实现NerdDinner 范例程序。
实现Details视图模板
下面,我们将实现Details视图模板,用来显示单一Dinner模型的数据。首先,将光标定位到Details action方法(当然是在DinnersController控制器代码窗口),右键点击,在弹出的菜单中选择Add View菜单项。
与上一步创建NotFound视图模板一样,将弹出Add View对话框。这里,我们使用默认的Details作为视图名称,另外选择Create a strongly-typed View(创建强类型视图)复选框,并从下拉列表框中选择从Controller传递到View的Model模型类型。针对正在创建的Details视图,我们将传递Dinner对象(该类型完整的名称是NerdDinner.Models.Dinner)。如下图所示:
与NotFound视图模板创建Empty View不一样,这里我们选择Details模板。如上图所示,在View Content下拉列表框中选择Details选项。系统将根据传入的Dinner模型自动为details视图模板生成一个原始的实现。这样,方便我们快速开始视图模板的实现。
在点击Add 按钮之后,Visual Studio 自动在\Views\Dinners目录下创建Details.aspx视图模板。
在Details.aspx视图模板中,已经根据Dinner模型创建一个初始的实现。VS 引擎使用.NET发射机制,查询模型类的所有公共属性,并自动根据每一个字段的类型,添加相应的内容到视图模板中。
下面,我们运行NerdDinner Web应用程序,并在地址栏中输入/Dinners/Details/2,可以看到Details视图的显示信息。使用这一URL地址,可以显示我们前面在Dinners数据表中手动插入的记录,如下图所示。
就这么简单和快速,Details.aspx页面提供了一个初始的实现。下面,我们将根据需要,进一步定制用户界面。当我们仔细查看Details.aspx页面时,发现该页面包含一些静态的HTML和嵌入展示代码。在视图模板呈现时,<% %> 代码块就会执行,<%= %> 代码块执行其中的代码,并呈现结果到视图的输出中展示。
我们也可以在视图中编写代码,通过使用强类型的Model属性,访问传入到Controller控制器的Dinner模型对象。在访问Model属性时,Visual Studio编辑器提供了代码智能提示,如下图所示。
下面我们更改一下Details视图模板的代码,如下所示:
<asp:Content ID="Title" ContentPlaceHolderID="TitleContent" runat="server">
Dinner:
<%= Html.Encode(Model.Title) %>
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="MainContent" runat="server">
<h2>
<%= Html.Encode(Model.Title) %></h2>
<p>
<strong>时间:</strong>
<%= Model.EventDate.ToShortDateString() %>
<strong>@</strong>
<%= Model.EventDate.ToShortTimeString() %>
</p>
<p>
<strong>地点:</strong>
<%= Html.Encode(Model.Address) %>,
<%= Html.Encode(Model.Country) %>
</p>
<p>
<strong>描述:</strong>
<%= Html.Encode(Model.Description) %>
</p>
<p>
<strong>组织者:</strong>
<%= Html.Encode(Model.HostedBy) %>
(<%= Html.Encode(Model.ContactPhone) %>)
</p>
<%= Html.ActionLink("Edit Dinner", "Edit", new { id=Model.DinnerID })%>
|
<%= Html.ActionLink("Delete Dinner","Delete", new { id=Model.DinnerID})%>
</asp:Content>
再次访问/Dinners/Details/2 地址,这次呈现页面如下:
相关资源下载链接:
1. ASP.NET MVC 1.0 正式版发布了!!!
2. 免费ASP.NET MVC eBook 向导-电子书下载