asp.net – 在Response.RedirectToRoute之后跳过页面执行的正确方法
|
我正在使用新的路由功能编写asp.net 4.5应用程序.我有一个页面显示有关项目的一些信息.在Page_Load事件中,我检查路由数据(项目ID)和用户权限,如果某些内容不正确(例如,id用于删除的项目),我使用Response.RedirectToRoute将它们发送到包装,直接回到主页.不要通过GO,不要收200美元. 这是完全合理的,直到我尝试访问已删除的项目而不是主页我得到一个错误页面.我做了一些挖掘,发现即使在我使用RedirectToRoute(与标准的Redirect方法不同)之后,页面的其余部分代码为continues to execute,这至少看起来很浪费(因为我只是要扔掉结果)并抛出错误当必要的数据不存在时. 我做了一点SO挖掘,发现了令人难以置信的evil,即Response.End().它做了我需要的,但即使是MSDN page也告诉我,Response.End是一个古老被诅咒的语言的私生子,不适合看到白天的光.主要的反对意见似乎是Response.End抛出一个异常,这对性能有害.我不是最有经验的开发人员,所以我完全不了解这个问题,但我很难相信抛出异常比加载整个网页更加昂贵. workarounds对于如此简单的任务来说似乎相当复杂和过度,特别是因为大多数页面需要某种有效性检查. 在这种情况下我该怎么办?使用Response.End并请求原谅我的傲慢?凑齐一些丑陋的解决方法?或者我对这个问题的看法是错误的开始?我真的很想知道. 更新:现在我已经考虑了一点,我想知道我是否对这个问题有错误的观点.也许立即重定向不是对用户体验的最佳响应.我最好不要在面板中包装所有控件,并使用这样的东西? Private Sub Page_Init(sender As Object,e As EventArgs) Handles Me.Init
'Validation Code
If notValid Then
ControlsPanel.Visible = false
ErrorPanel.Visible = true
End If
End Sub
解决方法我可能会因为没有直接回答问题而走出困境,但我喜欢看到有关用户体验的更新.我更喜欢你建议的做法.我喜欢给id无效的410错误并将其扩展一下(从C#翻译): Protected Sub ItemDoesNotExist() 'item does not exist,serve up error page ControlsPanel.Visible = False ErrorPanel.Visible = True 'add meta tags for noindex Dim mymeta As New HtmlMeta() mymeta.Name = "robots" mymeta.Content = "noindex" Page.Header.Controls.Add(mymeta) 'RESPOND WITH A 410 Response.StatusCode = 410 Response.Status = "410 Gone" Response.StatusDescription = "Gone" Response.TrySkipIisCustomErrors = True 'important for IIS7,otherwise the Custom error page for 404 shows. Page.Title = "item gone" End Sub (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 从经典的ASP到.net c#或vb?
- 什么是%=或%:在ASP.NET中调用?
- 做一个ASP.NET网站的更改杀死活动会话?
- asp.net-mvc – ASP.NET MVC Action被调用两次
- 如何使用ASP.NET解析JSON字符串?
- asp.net-mvc-3 – MailTo链接在Razor
- asp.net – 为什么我们应该通过部分视图使用MVC 6功能视图组
- asp.net-mvc – MVC4是否被烘烤到.NET 4.5?
- asp.net – 来自WebHttpBinding的WCF服务中的Access Sessio
- asp.net-mvc – 使用Html.BeginForm发布到当前控制器
- asp.net-mvc – 以Razor语法为Telerik MVC Grid定
- asp.net-mvc – 如何在验证汇总中显示MVC 3客户端
- asp.net – 如何使用JSON方法序列化javascript对
- asp.net – 解决方案:在使用User控件时,元素不是
- entity-framework – 数据读取器与指定的模型不兼
- asp-classic – 你用什么来编辑和开发经典ASP
- asp.net-mvc-4 – SimpleMembership – 向UserPr
- asp.net – 无法将HttpHandler映射到“路径/ *”
- asp.net – 有没有办法知道是否有人为您的网站添
- asp.net – 在内容页面的主页面上设置属性值
