gpt4 book ai didi

asp.net-mvc - 根目录的ASP MVC路由

转载 作者:行者123 更新时间:2023-12-04 23:53:52 24 4
gpt4 key购买 nike

我们在同一台服务器上部署了多个 Web 应用程序,需要相互通信。例如,在IIS的wwwroot文件夹下部署了2个应用程序:Foo和Bar。

问题是:从 Foo 网络应用程序中的 FooView.cshtml View ,我需要从 Bar< 调用 Test Controller 的 MyAction/strong> 网络应用程序。

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

<a href="\Bar\Test\MyAction?id=100">Test action</a>

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

最佳答案

如果要为应用程序外部存在的操作创建链接,则使用 @Url.Action@Html.RouteLink 没有意义。

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

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

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());
}
}

查看:

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

@Html.ExternalLink("/home/index", "Click to go to external app!")

关于asp.net-mvc - 根目录的ASP MVC路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33077255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com