Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database MVC:SearchController尝试查找完全匹配的页面,并重定向到这些页面,否则将重定向到SearchResults视图_Database_Search_Redirect_Model View Controller - Fatal编程技术网

Database MVC:SearchController尝试查找完全匹配的页面,并重定向到这些页面,否则将重定向到SearchResults视图

Database MVC:SearchController尝试查找完全匹配的页面,并重定向到这些页面,否则将重定向到SearchResults视图,database,search,redirect,model-view-controller,Database,Search,Redirect,Model View Controller,在MVC应用程序中,我实现的搜索控制器(/search/all/query)如下: 它检查查询是否有各种类型的精确匹配页面,如果有,则重定向到这些页面(例如,/some other controller/view/query) 如果没有完全匹配,它将通过联合数据库查询重定向到搜索结果页面,列出可能的选项(/search/results/query) 这很有效,但我觉得这是“错误的”,因为: 在精确匹配的情况下,我至少进行一次DB查询以了解精确匹配,然后从该控制器进行另一次DB查询以实际生成该视图

在MVC应用程序中,我实现的搜索控制器(
/search/all/query
)如下:

  • 它检查查询是否有各种类型的精确匹配页面,如果有,则重定向到这些页面(例如,
    /some other controller/view/query

  • 如果没有完全匹配,它将通过联合数据库查询重定向到搜索结果页面,列出可能的选项(
    /search/results/query

  • 这很有效,但我觉得这是“错误的”,因为:

  • 在精确匹配的情况下,我至少进行一次DB查询以了解精确匹配,然后从该控制器进行另一次DB查询以实际生成该视图

  • 在没有精确匹配的情况下,它会进行几次DB查询以确定没有精确匹配,然后对
    search/results/
    函数/视图进行另一次查询

  • 我担心这个专注于重定向的解决方案是笨拙/低效的,因为它做了一些工作,然后“推卸责任”到应用程序的另一部分,该部分必须做重叠的工作

    我的问题是:

  • 如上所述的重定向实际上是这种情况的合理解决方案吗
  • 有没有更好的方法来处理这种情况

  • 为什么您需要两个控制器/搜索/全部/查询和/搜索/结果/查询?我会把这两个合并成一个。谢谢,这实际上是一个进步。只是想澄清一下:搜索是一个控制器。Search/all不加载任何视图,它总是重定向到其他视图,如果存在精确匹配,则重定向到其他控制器,或者重定向到Search/results视图。所以你建议我在没有完全匹配的情况下“搜索”加载一个视图,如果有完全匹配的情况下重定向到另一个控制器?是的。如果/search找到一个精确匹配,它可以重定向,如果有多个匹配,它将使用当前结果集加载视图,并且不需要再次点击数据库。