在Asp.Net中从页面A移动到页面B.什么是最好的方法?

时间:2009-05-12 22:43:20

标签: asp.net performance client-side server-side pt

我有一个用户,我们称之为PageA.aspx。该用户需要访问PageB.aspx。显而易见的方法是使用超链接将它们简单地发送到PageB.aspx。这让我想到了在页面之间获取的其他方法。可以使用javascript来进行客户端跳转。还有看似庞大的服务器端重定向。

我想知道的是这些不同方法之间的性能匹配(如果有的话)。我将假设服务器端的重量有点重,但是多少?这些方法的比例不同吗?这种做法与另一种做法有什么隐藏的问题吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

真正的链接最适合大多数情况。所有用户代理都知道链接是什么以及它代表什么。它最适合搜索引擎优化,可访问性和可用性。

如果您需要跟踪有关单击哪个链接的详细信息,则服务器端(通过回发)重定向是好的...但这是对服务器的额外请求(以及给用户的时间)。它还会破坏搜索引擎优化(等),所以它只是一个适当的“网络应用程序”中可行的选项,其中控制或忽视蜘蛛或可访问性。

JS可以为您提供跟踪功能,但在禁用JS的环境中,它是无用的(单独使用)。将活动发送回服务器会增加负载,因此需要考虑。

如果您需要 ,请考虑使用标准链接并使用jquery挂钩点击事件以跟踪事物。但真的......只有你需要它,因为它会稍微减慢用户体验。

简而言之:除非你有充分理由不遵守标准。

答案 1 :(得分:1)

我认为重要的问题是用户为何从PageA转到PageB?他们做了什么导致这种情况发生?

是因为他们请求了一些不同的资源(“获取”),他们是否向您的服务器提交数据(即它是“帖子”的一部分),用户是否知道PageA与PageB不同(他们是在概念上相同的资源,但它的不同观点)或其他东西?

其他考虑因素,例如PageB是否可以在没有PageA的情况下访问(是否可以加入书签,它是否有自己的URL,是否应该被视为浏览器中的其他URL?)将指导您。

如果不了解这些内容,很难给出“最佳”解决方案。

至于使用Server.Transfer或Response.Redirect,这里介绍了这两种方法的不同之处:

Server.Transfer Vs. Response.Redirect Response.Redirect and Server.Transfer When would I use Server.Transfer over PostBackURL?

哦,这些都不适合ASP.NET MVC应用程序,而应该转而使用Controller上的Action。

http://weblogs.asp.net/mikebosch/archive/2008/02/02/asp-net-mvc-tip-2-redirecting-to-another-action-and-passing-information-to-it.aspx Redirect to action in other controller

答案 2 :(得分:0)

我的一般方法是显示数据的任何页面都应该是get。帖子应该接受数据,但不能归还,恕我直言。

因此,我(几乎)总是在帖子后进行重定向。这是一个防止用户错误的次要成本。

首先,它会阻止相同数据的多个帖子 - 如果用户因任何原因重新加载(或点击后退按钮),我不希望重新提交数据。

搜索引擎问题也很重要。如果PageB是您想要编入索引的页面,则无法通过javascript或帖子找到它。