【问题标题】:How can I intercept or override HtmlHelper link generation in ASP.NET MVC?如何在 ASP.NET MVC 中拦截或覆盖 HtmlHelper 链接生成?
【发布时间】:2010-08-19 17:47:50
【问题描述】:

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

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

虽然我是 AJAX 的忠实拥护者,而且从技术上讲,我们不打算支持未启用 javascript 等的浏览器,但我仍然希望保留我们的选项。因此,我希望能够在任何时候通过内置的 HtmlHelper 方法呈现链接或表单时,我可以挂钩到 URL 构造,并将上下文 ID 附加到 URL 查询参数。有没有(最好是简单的)方法来做到这一点?或者您认为我的问题的另一种解决方案会更好吗?

【问题讨论】:

    标签: asp.net-mvc html-helper


    【解决方案1】:

    没有办法进入现有的 HTMLHelper 的代码路径。你将不得不自己动手。有希望,您可能会摆脱只传递给现有 html 帮助程序的肤浅的外观。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 2012-03-06
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      相关资源
      最近更新 更多