Asp.net MVC樣本項目“Suteki.Shop”分析之ViewData

來源:互聯網
上載者:User

使用強型別的ViewData好處有許多,比如說在IDE中就會有更好的支援,比如代碼提示。同時在View 與Controller之間有更嚴謹的“約定”。在Suteki.Shop項目中作者對強型別的ViewPage引入 是通過MvcContrib實現的,下面就是其ViewPage<T>代碼(Suteki.Shop\Views\ViewPage.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.Common\ViewData檔案夾下面的幾個類,包括: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;
}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.