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 小例子
视图可以不包含任何应用逻辑或者数据库检索代码,所有的应用逻辑都可以在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 小例子
相关文章推荐
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十七【视图1】
- ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习
- ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解
- ASP.NET MVC学习笔记-Routing及视图引挚解析原理
- [转]ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- ASP.NET MVC 学习心得 (4) – 视图控制器
- ASP.NET MVC 5 学习教程:添加视图
- 学习ASP.NET MVC(三)——我的第一个ASP.NET MVC 视图
- ASP.NET MVC 学习: 视图(http://whx.tzgt.gov.cn/newOperate/html/1/12/123/12058.html)
- ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- ASP.NET MVC学习之视图篇(2)
- ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- asp.net mvc 4 高级编程学习笔记:第三章 视图(2)
- ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习
- ASP.NET MVC学习之视图篇(1)
- ASP.NET MVC 5 学习教程:添加视图
- ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解
- ASP.NET MVC 5 学习教程:修改视图和布局页
- ASP.Net MVC开发基础学习笔记(10):分部视图PartialView
- ASP.NET MVC学习之视图篇(2)