Welcome 微信登录

首页 / 网页编程 / ASP.NET / Asp.net MVC示例项目“Suteki.Shop”分析之ViewData

Asp.net MVC示例项目“Suteki.Shop”分析之ViewData2009-12-31 博客园 代震军使用强类型的ViewData好处有许多,比如说在IDE中就会有更好的支持,比如代码提示。同时在View 与Controller之间有更严谨的“约定”。在Suteki.Shop项目中作者对强类型的ViewPage引入 是通过MvcContrib实现的,下面就是其ViewPage<T>代码(Suteki.ShopViewsViewPage.cs):

public class ViewPage<T> : MvcContrib.FluentHtml.ModelViewPage<T> where T : class
{
public ViewPage() : base(new LowercaseFirstCharacterOfNameBehaviour())
{}
}

public class ViewUserControl<T> : MvcContrib.FluentHtml.ModelViewUserControl<T> where T : class
{
public ViewUserControl() : base(new LowercaseFirstCharacterOfNameBehaviour())
{}
}

可以看出ViewPage和 ViewUserControl只是对MvcContrib中ModelViewPage,ModelViewUserControl的继承,代码很简单,没 什么太多可说的。强类型的ViewData使用形如:ViewPage<TViewData>,我们可以通过打开一个 View看一下,比如“编辑用户信息”时的视图头声明部分:

<%@ Page Title="" Language="C#" Inherits="Suteki.Shop.ViewPage<ShopViewData>"

好了,下面就开始 正文。

首先我们要看一下Suteki.CommonViewData文件夹下面的几个类,包括:IErrorViewData ,IMessageViewData,ViewDataBase等,其类图如下:

从图中看出, ViewDataBase是其体系“核心”, 其实现了 IMessageViewData, IErrorViewData这两个接 口。其实体代码如下:

public abstract class ViewDataBase : IMessageViewData, IErrorViewData
{
public string Message { get; set; }
public string ErrorMessage { get; set; }

public ViewDataBase WithErrorMessage(string errorMessage)
{
this.ErrorMessage = errorMessage;
return this;
}

public ViewDataBase WithMessage(string message)
{
this.Message = message;
return this;
}
}