我们在相同的服务器上部署了多个Web应用程序,以便彼此通信。例如,在IIS的wwwroot文件夹中部署了2个应用程序:Foo和Bar。
问题是:从Foo Web应用程序的FooView.cshtml视图中,我需要从 Bar <调用测试控制器的 MyAction / strong>网络应用程序。
现在我们必须像这样硬编码网址:
custom serializer
如何在路由配置中定义它,以便我们可以使用Url.Action或Url.Route等方法来调用该操作?提前谢谢。
答案 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());
}
}