我刚刚完成了我的第一个ASP.NET MVC(2)CMS。下一步是建立一个网站,该网站将显示CMS数据库中的数据。这是网站设计:
http://img56.imageshack.us/img56/4676/portal.gif http://img56.imageshack.us/img56/4676/portal.gif
#1(红色框)-显示文章类别。 ViewModel:
public class CategoriesDisplay
{
public CategoriesDisplay() { }
public int CategoryID { set; get; }
public string CategoryTitle { set; get; }
}
#2(棕色框)-显示最近的x篇文章;跳过绿色方框3中的那些。 View 模型:
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框将在网站上重复出现,它们是母版页的一部分。因此,我的问题是:将数据从模型传输到Controller并最终传输到View页面的最佳方法是什么?
母版页和将所有这些类包装在一起的ViewModel类,或者
每个这些盒子,使每个
他们中的人继承了适当的类(Class)
(如果有可能,
这样工作吗?)还是
所有 Controller 和所有其他
通过ViewData进行数据传输,
可能是更糟糕的方法:)或
简单的方法,但我不知道/看不到吗?
提前致谢,
伊莱
编辑:
如果您的答案是#1,请说明如何制作母版页 Controller !
编辑2:
在本教程中,描述了如何使用抽象类http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx将数据传递到母版页
在“ list 5 – Controllers\MoviesController.cs”中,直接使用LINQ从数据库而不是从存储库检索数据。因此,我想知道这是否只是本教程中的内容,还是这里有一些窍门而不能/不应该使用存储库?
最佳答案
要将数据获取到我的母版页:
我将为每个部分创建Views,ViewModels和Actions。然后调用
Html.RenderAction(...)
例如:我将只为redbox创建html的
CategoriesDisplay.aspx
。我会通过您的CategoriesDisplay
模型。然后在我的 Controller 中:public class CategoryController : Controller
{
public ActionResult DisplayCategories()
{
var model = new CategoriesDisplay();
...
return View(model);
}
}
然后在我的母版页中:
<% Html.RenderAction<CategoryController>(c => c.DisplayCategoreis()); %>
这将在母版页中内联显示CategoriesDisplay View 。反过来,您也可以拥有SOC(关注点分离),干净且易于管理的代码。
关于asp.net-mvc - asp.net mvc2-母版页和代码组织的 Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2568318/