2009-06-30 26 views
1

想象一下,您有一个列表页面,它是您网站上多个实体(如搜索页面)的串联。您整理您的网站在行动的所有实体,和他们都映射到一个通用的视图模型类型..MVC模式实践(asp.net mvc) - 在动作中生成url,而不是视图

伪:

from articles, posts, projects 
orderby rating 
select top 50 as 'SearchResult' 

我的搜索结果类可能是这样的:

SearchResult { Title, Snippet, Rating } 

在这种情况下,视图将没有每个结果的“上下文”的上下文,那么如何生成一个url来获取更多细节,并对结果进行分类?

SearchResult { Title, Snippet, Rating, ResultType } 
where ResultType is { Article, Post, Project } enum 

这样的工作,它需要的视图来发现枚举控制器操作的关系。但是

这会导致可维护性的问题,每一个新的实体类型或静态内容部分将需要分类,以及从新类别到控制器动作的映射。另外,这会导致问题,因为......我将哪些数据传递给动作?如果没有任何数据可以通过?

好像最好的情况是,生成“详细信息”的行为,其中有每个实体的情况下,动作/数据映射URL ..

它是确定的控制器/行动生成网址,他们不应该保持不可知论?

在此先感谢。

回答

3

我认为从控制器传递URL来查看是可以的。例如,如果您开发了一个网络搜索引擎(新的Google竞争对手:),则没有其他方法可以查看确定具有给定标题,代码段和评级的文档的位置。

+0

+完全同意 – 2009-06-30 11:45:14