2009-09-09 59 views
2

所以我是一个老的web表单人员,并且是MVC(通常不仅仅是ASP.NET)框架的新成员。我的观点开始看起来很像老式的经典ASP。不是我添加任何业务逻辑或任何东西,而是更多的表现逻辑。我最终用了很多<% %>标签和if/else语句来决定要显示的链接或要使用的样式。ASP.NET MVC:我做对了吗?

我也想过决定控制器中的样式或链接并将它们设置在模型上,但听起来像打破了MVC的目的。

我最终忽略了<% %>以确保我的HTML格式良好。

我想听听您的意见。你的观点和我的一样吗?难道我做错了什么?

回答

2

如果我有大量的表示逻辑,我尝试将其移到HtmlHelper类的扩展。

+0

所以你为每个案例创建一个扩展方法? – 2009-09-09 21:17:15

+0

这完全取决于案件和复杂性,正如Bryan所说,Partial Views可以帮助清理事情。 – mxmissile 2009-09-09 21:23:18

+0

事实上,我的视图现在更加清洁。谢谢... – 2009-09-11 12:47:18

1

随着mxmissle所说的(我投他他)说我会做一个局部视图来将一个页面的复杂区域移动到一个单独的文件,它有助于清理和代码重用。

我发现如果事情看起来有点过时学校ASP是时候重构。令人惊讶的是你可以清理成辅助类或局部视图,或者简单地使用更简洁的东西重做。

编辑:此外,如果它看起来有点过时学校的ASP,也许你有你的观点,不属于那里的逻辑。

0

我通常为每个视图创建一个ViewModel类,该视图包含与特定视图关联的任何逻辑。这适用于条件的结果只是简单的DIV或SPAN标记而不能真正保证其扩展或局部视图的情况。

我发现它会清理我的观点中很多经典的ASP'ish外观。

有关此方法的更多信息,请参见Stephen Walther's blog

+0

据我所知,ViewModels可以帮助你在控制器和视图之间来回传递数据,但它无助于清理视图中的“标签汤”。 – 2009-09-09 22:15:32

0

是的,你做得对。在所有方面,ASP.NET MVC都不是对经典Web表单的改进。它有其优点和缺点(正如你发现的,“标签汤”是其中的一个缺点)。

有几种方法可以减轻痛苦(向模型,HTML助手,局部视图等移动尽可能多的逻辑),但这很难避免。

+0

您能否提供一些关于您添加到模型的逻辑的示例? – 2009-09-09 22:16:34