http://msdn.microsoft.com/zh-cn/library/dd410123(v=vs.100).aspx

ASP.NET MVC框架支持使用视力引擎生成视图(UI)。默认情况下,MVC框架使用从现有ASP.NET页面(.aspx)、母版页(.master)和用户控件(.ascx)类型中继承的自定义类型(ViewPage、ViewMasterPage和ViewUserControl)作为视图。

在MVC Web应用程序的普通工作流中,控制器操作方法将处理传入的Web请求。这些操作方法使用传入的参数值执行应用程序代码以及检索或更新数据库中的数据模型对象。然后,这些方法会选择一个将响应呈现到浏览器的视图

 

使用视图呈现UI

在模型-视图-控制器(MVC)模式中,视图专门用于封装呈现逻辑。这些视图不应包含任何应用程序逻辑或数据库检索代码。所有应用程序逻辑都应该由控制器进行处理。视图使用从控制器传递给它的数据来呈现相应的UI。此数据是使用View 方法从控制器操作方法中传递给视图的。

注意:建议在Views文件夹位置存储MVC Web项目结构中的视图。

下面的示例演示如何在controller类中呈现视图。

public ActionResult Categories()
{
    List<Category> categories = northwind.GetCategories();
    return View(categories);
}

在本示例中,View 方法调用中传递的参数是传递给视图的 Category 对象的列表。 View 方法将调用视图引擎,该引擎使用列表中的数据呈现到视图,并在浏览器中显示该数据。

 

视图页

视图页是ViewPage 类的实例。它从 Page 类中继承并实现 IViewDataContainer 接口。 ViewPage 类定义 ViewData 属性,该属性将返回 ViewDataDictionary 对象。此属性包含视图应该显示的数据。
您可以使用在 Visual Studio 项目中针对 ASP.NET Web 应用程序提供的模板来创建视图页。默认情况下,视图是由 MVC 框架呈现的 ASP.NET 网页。MVC 框架使用 URL 路由来决定要调用的控制器操作,然后控制器操作将决定要呈现的视图。
下面的示例演示 Index.aspx 页的标记。此页是在 Visual Studio 中创建新 MVC 项目时生成的默认视图之一。按照约定,会将 ASP.NET MVC 应用程序的默认视图命名为“Index”。

<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>

@ Page 指令包含 Inherits 特性,该特性定义应用程序与视图之间的关系。默认情况下,Inherits 特性的值使用以下模式:Application.Views.Controller.ViewPage

如果使用强类型视图,则 Inherits 特性使用以下模式:

Application.Views.Controller.ViewPage<Type>

 

母版页视图

与基于Web 窗体的应用程序中的 ASP.NET 页面相似,ASP.NET 页面视图(.aspx 文件)可以使用母版页定义一致的布局和结构。在典型网站中,母版页绑定到内容页 @ Page 指令中的内容页。您还可以在调用 Controller 类的 View 方法时使用动态母版页(即,可以在运行时分配母版页)。
下面的示例演示 Site.master 视图,该视图是在 Visual Studio 中创建新 MVC 项目时生成的母版页。

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

<body>
    <div class="page">

        <div id="header">
            <div id="title">
                <h1>My MVC Application</h1>
            </div>

            <div id="logindisplay">
                <% Html.RenderPartial("LogOnUserControl"); %>
            </div> 

            <div id="menucontainer">

                <ul id="menu">              
                    <li><%= Html.ActionLink("Home", "Index", "Home")%></li>
                    <li><%= Html.ActionLink("About", "About", "Home")%></li>
                </ul>

            </div>
        </div>

        <div id="main">
            <asp:ContentPlaceHolder ID="MainContent" runat="server" />

            <div id="footer">
            </div>
        </div>
    </div>
</body>
</html>

 

分部视图

通过使用分部视图,您可以定义一个将呈现在父视图内部的视图。分部视图以ASP.NET用户控件(.ascx)形式实现。

实例化分部视图时,它将获得自己的可用于父视图的 ViewDataDictionary 对象副本。因此,分部视图可以访问父视图的数据。但是,如果分部视图更新了数据,则那些更新将只影响该分部视图的 ViewData 对象。父视图的数据未发生更改。

 

用于呈现视图的帮助器类和成员

创建视图时,许多任务是重复性任务或者要求了解特殊的 MVC 框架知识。为了应对这些情况以及使呈现 HTML 更加轻松,MVC 框架添加了帮助器类和成员。帮助器类的设计可扩展,以便您可以添加自定义的帮助器类和成员。

MVC框架包括以下帮助器:

  • 窗体帮助器(适用于窗体元素,如单选按钮、列表框、选择按钮、文本框、文本区域、隐藏内容和密码字段)。
  • URL帮助器(允许生成用于路由的URL)。
  • HTML帮助器(包括用于管理HTML字符串的函数,如Encode、Decode、AttributeEncode和RenderPartial)。

通过使用添加到ViewPage、ViewUserControl和ViewMasterPage类的属性,您可以访问基于代码的呈现帮助器。

posted on 2013-03-20 23:37  Louis.Lu.Sz  阅读(396)  评论(0编辑  收藏  举报