1

我需要根据配置设置更改 MVC 呈现操作链接(以及表单和 url 等)的方式。我正在使用 MS MVC 编写一个 facebook 应用程序,我的操作链接需要呈现链接,所以:

<a href="/MyFBApplication/Home/Index/">home</a>

单击上面的链接将浏览到:
http ://apps.facebook.com/MyFBApplication/Home/Index/

“MyFBApplication”是 facebook 应用程序的名称。要建立我通过调用开始的链接

Html.ActionLink("Home", "Index", "Home")

当用户点击链接时,facebook 会在后台向该链接发出请求:

http://www.myapplicationserver.com/facebook/123456/Home/Index/
(123456 是客户端 ID,需要)

然后来自此处的响应由 facebook 处理并显示给用户:
http ://apps.facebook.com/MyFBApplication/Home/Index/

如上所述,facebook 从后台请求页面数据。
http://www.myapplicationserver.com/facebook/123456/Home/Index/

问题是调用

Html.ActionLink("Home", "Index", "Home")

将呈现一个指向
http://apps.facebook.com/facebook/123456/Home/Index/的链接

我需要它来引导:
http ://apps.facebook.com/MyFBApplication/Home/Index/

我确实让它正常工作,购买了一套新的扩展方法。

 Html.FacebookActionLink("Home", "Index", "Home")
 Html.FacebookBeginForm("Index", "Home")
 Html.Facebook(etc)

但这有一种“气味”。我想找到一个可以拦截 Html.ActionLink() 的管道并更改输出的地方。然后我可以使用所有标准调用。

谢谢!

4

1 回答 1

2

为什么会有“气味”?Microsoft 将 ActionLink 方法构建为扩展方法。如果这些不能满足您的目的,您可以像以前一样编写自己的。

如果您真的想要,我想您可以创建自己的 ActionLink 方法版本作为重载(只要方法签名不模棱两可)。

如果您需要了解 MS 如何实现 ActionLink 扩展方法,请查看 LinkExtensions 类下的源代码。你可以在这里下载

于 2009-05-15T12:31:06.730 回答