【问题标题】:How can I go back to a search result table that is in a partial view?如何返回部分视图中的搜索结果表?
【发布时间】:2013-11-18 14:27:01
【问题描述】:

我在一个访问 SQL 数据库并允许用户搜索和查看数据的 ASP.NET MVC 项目中工作。让我描述一下: 我有一个带有搜索过滤器的视图。当我单击此视图中的搜索按钮时,控制器会返回一个部分视图,其中包含一个包含一些数据的表,该表显示在过滤器下方。然后,我可以单击一行的 actionLink 以转到另一个包含详细信息的视图。在详细信息视图中,我有一个“返回列表”按钮。 当我单击“返回列表”时,我希望具有过滤器和局部视图的视图完全按照以前的样子显示。我该怎么做?

我的“返回列表”是一个指向视图的操作链接。问题是,当我点击“返回列表”时,没有出现带有表格的部分视图,因为需要先点击提交按钮。如何通过控制器强制提交按钮?

【问题讨论】:

    标签: sql-server asp.net-mvc razor asp.net-mvc-partialview


    【解决方案1】:

    这并不是 MVC 本身就可以解决的问题。这实际上只是一个状态问题,您需要保持页面的状态,并在返回该状态时恢复该状态。

    这可以通过在页面之间保持状态的典型方式来解决:

    1) 将您的搜索条件保存在会话中,并在返回页面时检索它们。

    2) 通过指向详细信息页面的链接传递您的搜索条件,然后再次通过“返回列表”链接。

    并且(正如下面的评论指出的那样),您当然需要使用会话/查询字符串中的值再次运行搜索并将搜索结果呈现给视图,就像您最初所做的那样执行搜索。

    【讨论】:

    • 您还需要运行在搜索页面加载时加载部分视图的代码。我猜你是按钮的 javascript/jquery 点击处理程序?按照此处的建议通过会话值恢复表单值,然后运行页面加载后按钮单击运行的相同代码。
    【解决方案2】:

    最简单的方法是在另一个选项卡中打开链接内容...使用<a href="..." target="_blank">Clic here</a>

    客户端选项: 您可以将链接的内容加载到另一个容器 <div>... 隐藏包含搜索结果和过滤器的容器。然后,当用户单击“返回搜索...”时,您只需显示包含搜索结果和过滤器的容器,并隐藏和清理另一个容器。

    这段代码没那么难,不用再去服务器了。

    如果您可以重新加载页面,@Jerard Rose 在他的回答中解释了另外两种涉及重新加载搜索结果、再次查询数据库的方法。

    【讨论】:

    • 最简单并不总是意味着最好的用户体验。开发人员需要(在大多数情况下)更关心什么对用户最好,什么对开发人员最好。除非开发者是用户,在这种情况下,随心所欲。
    • 是的......但是否有一种简单的方法......应该是询问谁根据他的场景和专业水平选择最佳方法的人。 ;)
    • 同意,这就是为什么我没有否决您的回答。 ;) 这是完全可以接受的,如果您的用户对 UX 没问题,这会产生。我个人不喜欢涉及打开新窗口的用户体验(可能除了某些边缘情况),这就是为什么我个人不建议将其作为一个选项。
    【解决方案3】:

    值可以通过多种方式在页面之间传递,例如:Session、QueryString、Public property、Cookie、HTTPContext。

    也许您正在调用“详细信息”操作以前往详细信息页面。你能做的就是这样,

    1. When you go to the details page, store your search filter value and pass it to the details page. so that when you return to the previous page you can get back/pass the values again if needed.
    2. Now if you click 'back to list' button pass the values that you already have for filtering to your desired action which is responsible for the partial view.
    3. Do the same thing that you did while clicking on the 'Search' button in the action.
    

    希望这会有所帮助 谢谢

    【讨论】:

      猜你喜欢
      • 2015-11-07
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 2019-11-28
      • 1970-01-01
      • 2017-02-28
      相关资源
      最近更新 更多