您的位置:首页 > 编程语言 > ASP

ASP.NET MVC 学习: 视图

2008-03-18 16:07 405 查看
用视图呈现UI

视图可以不包含任何应用逻辑或者数据库检索代码,所有的应用逻辑都可以在controller中进行处理。

视图通过使用controller类在调用RenderView方法的时候提供视图相关数据对象呈现UI:

public void Categories()

{

List<Category> categories = northwind.GetCategories();

RenderView("Categories", categories);

}
禁止访问Views目录

为了在你的ASP.NET MVC WEB应用程序中添加额外的安全性,你可以直接阻止访问Views目录。添加如下的代码到你Views目录下的web.config中的system.web节下就可以了:

<authorization>

<deny users="*"/>

</authorization>

ASPX视图页

ViewPage类型的视图页是Page类的一个实例。我们看一下下面的视图页:

using System;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Mvc;

namespace MvcApplication.Views.Home

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

<title>ViewData Property - Dictionary Based</title>

</head>

<body>

<div>

<%="About " + ViewData["CompanyName"]%>

</div>

</body>

</html>
当然,我们还可以使用一个强类型的ViewData属性.这个为数据从控制器传递到视图中提供更好的类型检测.下面的示例是使用强类型的ViewData,视图页是继承自ViewPage<T>的:

<head id="Head1" runat="server">

<title>ViewData Property - Strongly Typed</title>

</head>

<body>

<div>

<%="About " + ViewData.CompanyName %>

</div>

</body>
设置视图数据
通常,你提供数据给视图来呈现.要呈现视图,你调用控制器中的RenderView方法.这里有两种途径来将数据从控制器传递到视图中.Controller类暴露一个ViewData的属性,它返回键大小写无关的IDictionay<string,object>类型.你可以分配索引值到这个数据字典中.看下面的示例:

public SampleController : Controller

{

public void Welcome()

{

ViewData["FirstName"] = "Joe";

ViewData["LastName"] = "Healy";

RenderView("Welcome");

}

}
如果只是用一个视图名来调用RenderView方法,就像上面的示例所示,这个Controller对象的ViewData属性会被作为dictionary来传递给View.如果你希望使用一个强类型的ViewData属性,你可以忽略ViewData属性.作为代替,你创建一个你想传递到View中的对象,然后将它传递给RenderView方法.就如下面示例所示:

public class SampleViewData

public SampleController : Controller

<form action="/App/InsertCustomer">

The following error occurred while inserting the customer data:

<br />

<%= ViewData.ErrorMessage %>

<br />

First name: <input type="text" name="firstName"

value="<%= ViewData.FirstName %>" /><br />

Last name: <input type="text" name="lastName"

value="<%= ViewData.LastName %>" /><br />

<input type="submit" value="Insert" />

</form>

// CustomersController

public void NewCustomer() {

InsertError err = TempData as InsertError;

if (err != null) {

// If there is error data from the previous action, display it.

ViewData.FirstName = err.OriginalFirstName;

ViewData.LastName = err.OriginalLastName;

ViewData.ErrorMessage = err. ErrorMessage;

}

//

}
注:本文参考自:

http://quickstarts.asp.net/3-5-extensions/mvc/MVCViews.aspx
具体示例可以参考: Shawn Ji 兄弟的 ASP.NET MVC Preview 2 小例子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: