我有一个带搜索参数的搜索操作。我在一个结果中有搜索结果,我想重定向到一个show动作,如果有多个结果,我想指向列出所有结果的列表操作。
我重定向工作,但不是很好。我不确定如何进行搜索结果的传输。如果第一个“搜索”操作只提取id,那么由show或list动作来根据id提取更多数据吗?如何将他们的身份转移到具体行动?
答案 0 :(得分:2)
如果有多个结果,我可能会让搜索操作使用搜索结果呈现视图结果。如果合适,它可以重用列表视图,但是更容易简单地显示它们而不是尝试重定向到具有多个id的另一个动作。在单个结果的情况下,重定向到该项的详细信息操作可能是合适的。这意味着我需要在搜索期间检索足够的数据来填充模型以获取列表。如果重定向到详细信息操作,您只需按ID重定向,并让详细信息操作获取其显示所需的任何信息。
public ViewResult Search( string query )
{
... get results ..
if (results.Count() == 1)
{
return RedirectToAction( "details", new { id = results.First().ID } );
}
return View( "list", this.CreateListViewModel( results ) );
}
其中CreateListViewModel获取一组搜索结果并为List视图生成视图模型对象。
答案 1 :(得分:0)
另一种可能性是创建两个视图,一个用于单个结果,一个用于列表结果,并调用return View("Single", model)
或View("List, collection)
。