代码之家  ›  专栏  ›  技术社区  ›  meandmycode

MVC模式实践(ASP.NET MVC)-在操作中生成URL,而不是视图

  •  1
  • meandmycode  · 技术社区  · 17 年前

    假设您有一个列表页面,它是站点上多个实体(如搜索页面)的串联。在操作中整理站点的所有实体,并将它们映射到通用视图模型类型中。

    伪:

    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,其中包含每个实体的上下文和操作/数据映射。

    控制器/操作是否可以生成URL,它们是否应该保持不可知?

    事先谢谢。

    1 回复  |  直到 17 年前
        1
  •  3
  •   Alexander Prokofyev    17 年前

    我认为将URL从控制器传递到视图是可以的。例如,如果您开发了一个Web搜索引擎(新的Google竞争对手:),那么就没有其他方法来确定在哪里找到具有给定标题、代码段和评级的文档。