強型別 ViewData 提供 IDE 智慧提示、編譯期檢查與 Controller/View 間嚴謹契約。Suteki.Shop 透過 MvcContrib.FluentHtml.ModelViewPage<T> 實現基底類別:
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()) {}
}
View 頁面宣告繼承 ViewPage<ShopViewData> 即可獲得強型別模型。

核心 ViewDataBase 實作 IMessageViewData、IErrorViewData,提供 Message、ErrorMessage 與鏈式設定方法 WithMessage/WithErrorMessage,便於 Controller 以 Fluent 風格傳遞訊息:
public abstract class ViewDataBase : IMessageViewData, IErrorViewData {
public string Message { get; set; }
public string ErrorMessage { get; set; }
public ViewDataBase WithErrorMessage(string errorMessage) { ErrorMessage = errorMessage; return this; }
public ViewDataBase WithMessage(string message) { Message = message; return this; }
}
後續文章將詳細剖析各具體 ViewData 類別與 Controller 使用情境。