我有一个ASP.Net MVC 5网站。我的一个控制器有一个Search
动作,用于搜索数据库中的商店列表。
我想以某种方式跟踪最新的搜索查询并将其显示给另一页面中的用户。我想到的是:
有更好的方法吗?你建议采用哪种方法?
答案 0 :(得分:1)
您是否考虑过在客户端存储搜索关键字? (HTML5 Web Storage localStorage 或 sessionStorage ,具体取决于您的要求)。
然后,例如,您可以构建一个指向控制器实际搜索操作方法的链接列表,如果用户单击它,搜索将再次执行,因为结果可能已更改。
如果你真的想在数据库上存储搜索查询,我建议使用一个存储过程(Does Entity Framework Code First support stored procedures?),它可以包含历史插入和实际搜索。
希望这可以帮到你
存储过程示例:
CREATE PROCEDURE uspGetShopsByName
@Keyword nvarchar(30)
AS
-- Store the search in the history table
INSERT INTO [dbo].[SearchHistory] ([Keyword]) VALUES (@Keyword);
-- Execute the search
SELECT * FROM [dbo].[Shops] WHERE [ShopName] LIKE @Keyword + '%'
GO