我刚刚完成了我的第一个 ASP.NET MVC (2) CMS。下一步是建立网站,显示来自 CMS 数据库的数据。这是网站设计:
http://img56.imageshack.us/img56/4676/portal.gif http://img56.imageshack.us/img56/4676/portal.gif
#1(红框) - 显示文章类别。视图模型:
public class CategoriesDisplay
{
public CategoriesDisplay() { }
public int CategoryID { set; get; }
public string CategoryTitle { set; get; }
}
#2(棕色框) - 显示最后 x 篇文章;跳过绿框 #3 中的那些。视图模型:
public class ArticleDisplay
{
public ArticleDisplay() { }
public int CategoryID { set; get; }
public string CategoryTitle { set; get; }
public int ArticleID { set; get; }
public string ArticleTitle { set; get; }
public string URLArticleTitle { set; get; }
public DateTime ArticleDate;
public string ArticleContent { set; get; }
}
#3(绿色框) - 显示最后 x 篇文章。使用与棕色框 #2 相同的 ViewModel
#4(蓝色框) - 显示即将发生的事件列表。dataContext.Model.Event
用作ViewModel
方框#1、#2 和#4 将在整个网站上重复出现,它们是母版页的一部分。所以,我的问题是:将这些数据从模型传输到控制器并最终传输到视图页面的最佳方式是什么?
- 我应该为母版页和 ViewModel 类创建一个控制器,它将所有这些类包装在一起,或者
- 我是否应该为这些框中的每一个创建部分视图并让它们中的每一个都继承适当的类(如果它甚至有可能以这种方式工作?)或
- 我应该把这个重复的代码放在所有控制器中,并通过 ViewData 传输所有额外的数据,这可能是更糟糕的方式:) 或者
- 也许有更好,更简单的方法,但我不知道/看到它?
提前致谢, Ile
编辑:
如果您的答案是#1,那么请解释如何为母版页制作控制器!
编辑 2:
在本教程中,描述了如何使用抽象类将数据传递到母版页:http
://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx
在“清单 5 – Controllers\MoviesController.cs ",使用 LINQ 直接从数据库中检索数据,而不是从存储库中检索数据。所以,我想知道这是否只是在本教程中,或者这里有一些技巧并且存储库不能/不应该使用?