ASP MVC路由根目录

时间:2015-10-12 09:08:51

标签: asp.net-mvc routing

我们在相同的服务器上部署了多个Web应用程序,以便彼此通信。例如,在IIS的wwwroot文件夹中部署了2个应用程序:Foo和Bar。

问题是:从Foo Web应用程序的FooView.cshtml视图中,我需要从 Bar <调用测试控制器的 MyAction / strong>网络应用程序。

现在我们必须像这样硬编码网址:

custom serializer

如何在路由配置中定义它,以便我们可以使用Url.Action或Url.Route等方法来调用该操作?提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果要为您的应用程序之外的操作创建链接,则使用company@Url.Action是没有意义的。

帮助程序使用应用程序中存在的路由信息​​并相应地生成相对链接。路由配置明确限制在路由中定义的外部URL。

如果您经常这样做,您可以轻松创建自己的HTML帮助器以链接到它:

@Html.RouteLink

查看:

namespace System.Web.Mvc.Html
{
    public const string ExternalAppName = "externalapp";

    public static class ExternalHelpers
    {
        public static MvcHtmlString ExternalLink(this HtmlHelper htmlHelper, string externalPath, string linkText)
        {
            var tb = new TagBuilder("a");
            tb.MergeAttribute("href", Path.Combine("/" + ExternalAppName + externalPath));
            tb.SetInnerText(linkText);

            return new MvcHtmlString(tb.ToString());
        }
    }

    // Accepts a controller and action
    public static MvcHtmlString ExternalLink(this HtmlHelper htmlHelper, string controller, string action, int id, string linkText)
    {
        var tb = new TagBuilder("a");
        tb.MergeAttribute("href", Path.Combine("/" + ExternalAppName + "/", controller + "/" + id.ToString()));
        tb.SetInnerText(linkText);

        return new MvcHtmlString(tb.ToString());
    }
}