ASP根目录的MVC路由
ASP MVC Routing of root directory
我们在同一台服务器上部署了多个 Web 应用程序,需要相互通信。例如IIS的wwwroot文件夹下部署了2个应用程序:Foo和Bar。
问题是:从 Foo 网络应用程序的 FooView.cshtml 视图,我需要调用 Test[=25] 的 MyAction =] 来自 Bar 网络应用程序的控制器。
现在我们必须像这样对 url 进行硬编码:
<a href="\Bar\Test\MyAction?id=100">Test action</a>
如何在路由配置中定义它,以便我们可以使用像Url.Action或Url.Route这样的方法来调用操作?提前致谢。
如果要为应用程序外部存在的操作创建 link,则使用 @Url.Action
或 @Html.RouteLink
没有意义。
助手利用应用程序中存在的路由信息并相应地生成相关的 links。路由配置明确限制在路由中定义外部 URL。
如果您经常这样做,您可以轻松地创建自己的 HTML 助手来 link:
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!")
我们在同一台服务器上部署了多个 Web 应用程序,需要相互通信。例如IIS的wwwroot文件夹下部署了2个应用程序:Foo和Bar。
问题是:从 Foo 网络应用程序的 FooView.cshtml 视图,我需要调用 Test[=25] 的 MyAction =] 来自 Bar 网络应用程序的控制器。
现在我们必须像这样对 url 进行硬编码:
<a href="\Bar\Test\MyAction?id=100">Test action</a>
如何在路由配置中定义它,以便我们可以使用像Url.Action或Url.Route这样的方法来调用操作?提前致谢。
如果要为应用程序外部存在的操作创建 link,则使用 @Url.Action
或 @Html.RouteLink
没有意义。
助手利用应用程序中存在的路由信息并相应地生成相关的 links。路由配置明确限制在路由中定义外部 URL。
如果您经常这样做,您可以轻松地创建自己的 HTML 助手来 link:
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!")