部分视图上的ASP.net Razor Refresh返回主页

时间:2014-04-15 04:31:46

标签: javascript ajax asp.net-mvc razor

我使用ajax调用控制器来呈现部分视图。每当我点击刷新按钮或后退按钮时,它都会返回到我的主页/索引,而不是返回到正在显示的部分视图页面。有人知道解决方案吗?

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题,一种是让您的局部视图向网址添加哈希或查询字符串,并在您的JavaScript或控制器中处理以了解如何获取哈希/查询字符串并加载正确的局部视图在页面上重新加载。

但是如果你需要在重新加载之前跟踪他们正在做什么,你可以使用一些持有位置服务器端的东西,或者缓存客户端。有关缓存的提示,请查看thisthis

我发现两者同样运作良好,但是使用哈希或查询字符串会显示在网址中,并不总是显示您的目标。

修改

我不确定你在客户端使用什么框架(knockout.js,jQuery等),但是很多这些框架使这些东西更容易,你可以在加载时创建一个简单的视图缓存,根据您需要的顺序将所需的视图添加到缓存中,并在它们调用时将其注入div或其他内容。

这里的问题是,部分视图在某种程度上类似于代码snippits,服务器知道如何设置它们,并且客户端知道如何查看它们,但是浏览器不会将它们视为浏览器中的条目历史记录,因此您必须告诉浏览器如何确保数据按您的需要重新加载。

您可以看到的另一个选项是将它们注入浏览器历史记录中,但您仍然需要一种方法让服务器在加载时调整正确的部分内容。我发现这个here关于一个人为单页Web应用程序加载部分的实现,似乎是一个不错的选择。但同样,你需要知道如何重新加载数据。 但是要回答评论,浏览器没有一些神奇的方法来了解你用ajax调用的内容。如果您希望浏览器自动了解它,请尝试使用@Html.Partial(string partialViewName) or @Html.RenderPartial(string partialViewName),请参阅MSDN on these

您还可以查看在viewdata,tempdata,viewbag或会话数据中查看差异的this article内容,看看是否可以满足您的需求。