如何拦截或覆盖ASP.NET MVC中的HtmlHelper链接生成?

时间:2010-08-19 17:47:50

标签: asp.net-mvc html-helper

我们使用WebForms开始了一个项目,并开发了一个有点复杂的门户系统来容纳面包屑,导航等等。我们始终在URL上保留一个额外的导航上下文ID参数,以便我们可以稳健地跟踪用户的痕迹导航历史记录,即使他们使用多个选项卡或使用浏览器上的导航按钮。为了使其在WebForms中正常工作,所有非回发链接都需要由门户网站的实用程序方法生成。使用门户网站的实用程序方法可以获得许多好处,因此它确实不是一种负担。由于在给定页面上发生的任何操作都将使用回发,因此在执行这些操作时URL不会更改。

现在我们开始在我们网站的某些部分使用MVC,到目前为止过渡相对平稳。不过,我想确保我们的门户网站能够正常使用而不会妨碍我们。到目前为止,我们正在使用一些自定义的HtmlHelper扩展方法来生成各个页面之间的链接(即使“页面”在MVC中并不存在,某些操作具有呈现整个页面的效果)。这允许我们将导航上下文ID保留在页面操作的URL上。但是,为了避免丢失此URL参数,我们仅对页面中的任何操作使用AJAX请求。这使我们无法使用完整视图响应大多数操作请求,或者遵循Post-Redirect-Get模式。

虽然我是AJAX的忠实粉丝,而且我们在技术上并不打算在没有启用javascript的情况下支持浏览器,但我仍然愿意打开我们的选项。所以我希望能够做到这一点,以便任何时候通过内置的HtmlHelper方法呈现链接或表单,我可以在URL构造中有一个钩子,并将上下文ID附加到URL查询参数。有没有(最好是简单的)方法呢?或者你看到我的问题的另一个解决方案会更好吗?

1 个答案:

答案 0 :(得分:2)

无法进入现有的HTMLHelper代码路径。你将不得不自己动手。有希望,你可能可以通过现有的html助手传递表面外观。

相关问题