2010-09-23 58 views
0

例子是假的。MVC:在哪个组件中详细说明了数据展示的细节?

ASP.NET MVC:我有一个呈现学生信息的视图。学生信息由名字,姓氏和(可选)年龄组成(声明为int?)。

学生信息呈现类似,如果年龄没有规定我要显示“未指定”:

<span><%= Model.Student.FirstName %></span> 
<span><%= Model.Student.LastName %></span> 
<span><%= Model.Student.Age.HasValue ? Model.Student.Age.ToString() : "not specified" %></span> 

我上面的文字问题是,它使视图过于复杂(太复杂,我的网站设计师能够修改它)。

问题:我可以在哪里提出这个决定?

  1. 属性Student模型是一个业务对象,并且不得包含渲染细节。
  2. 我应该在模型中添加一个方法:Model.GetAgeAsText(Student student)?但是,最后我在模型上发现了大量松散悬挂的方法,这些方法都在被分组成某些东西......但是什么?
  3. 我可以创建一个自定义控件StudentAgeShower,这似乎是最正确的OO解决方案,但似乎有点矫枉过正。

有什么建议吗?

回答

2

创建预览的所有决策的学生的视图模型。

+0

我喜欢,我喜欢。然后将'StudentViewModel'暴露为'Model'的属性?什么时候创建了“StudentViewModel”?它住在哪里? – 2010-09-23 03:02:50

+1

是的,但我仍然称它为“学生”,视图模型是在它使用前的任何地方创建的......通常如果我像这样装饰我去看(新的ViewModel(realModel))类的东西(可能是更多的参与)有像http://automapper.codeplex.com/和类似的东西来帮助这些事情中的一些,取决于你需要多久执行一次,以及你的对象有多复杂 – 2010-09-23 03:07:22

+0

你处理日期格式的方式相同吗? – 2010-09-23 03:12:02