【发布时间】:2009-03-02 23:21:47
【问题描述】:
我正在开发一种 CMS/Wiki 应用程序来帮助我试验新的 Asp.Net MVC 框架,并且我正在尝试围绕一些代码组织进行思考。
现在,我有三个视图来显示一篇文章:索引、编辑和重命名。所有三个视图都显示当前页面的内容,或表示该页面不存在的占位符内容。
目前这是通过在每个视图的操作方法中使用以下代码来完成的:
MyPage myPage = null;
if (!string.IsNullOrEmpty(pageName)) {
myPage = mRepository.GetMyPage(pageName);
}
//Page does not exist.
if (myPage != null) {
ViewData["pageContent"] = myPage.GetParsedSource(new PageState());
ViewData["pageSource"] = myPage.Source;
ViewData["title"] = myPage.Title;
}
else {
ViewData["title"] = pageName;
ViewData["pageContent"] = "Page does not exist, feel free to create it!";
ViewData["pageSource"] = "";
}
ViewData["pageName"] = pageName;
我的问题是,这个逻辑究竟应该去哪里?
1) 控制器(就像现在一样),它需要跨操作方法复制上述代码?
2) 模型,将 pageSource 的默认值设置为上面显示的措辞?这样做的缺点是将显示文本移动到模型中。
3) 视图,使用 null 合并运算符将 null ViewData 条目转换为其默认值?
4) 在视图中,但添加额外的控制器来处理 pageName 不存在的情况。
编辑: 希望这应该澄清一些事情。申请流程如下: 当用户输入一个 URL(即 /pages/page_title)时,他们会到达一个显示文章内容的屏幕,以及标记为“编辑”和“重命名”的超链接。
单击编辑会显示一个包含文章内容的页面,以及用于编辑文章来源的表单控件。
单击重命名会显示一个包含文章内容的页面,以及用于编辑文章名称的表单控件。
【问题讨论】:
标签: c# asp.net-mvc model-view-controller