ASP.NET MVC - 如何获取操作的完整路径

发布于 2024-11-25 16:25:12 字数 123 浏览 1 评论 0原文

在视图内部我可以获得操作的完整路线信息吗?

如果我在控制器 MyController 中有一个名为 DoThis 的操作。我可以访问 "/MyController/DoThis/" 路径吗?

Inside of a View can I get a full route information to an action?

If I have an action called DoThis in a controller MyController. Can I get to a path of "/MyController/DoThis/"?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北方的巷 2024-12-02 16:25:12

您的意思是在 Url 帮助器上使用 Action 方法:

<%= Url.Action("DoThis", "MyController") %>

或者在 Razor 中:

@Url.Action("DoThis", "MyController")

这会给你一个相对 URL (/MyController/DoThis)。

如果您想获取绝对网址(http://localhost:8385/MyController/DoThis):

<%= Url.Action("DoThis", "MyController", null, Request.Url.Scheme, null) %>

You mean like using the Action method on the Url helper:

<%= Url.Action("DoThis", "MyController") %>

or in Razor:

@Url.Action("DoThis", "MyController")

which will give you a relative url (/MyController/DoThis).

And if you wanted to get an absolute url (http://localhost:8385/MyController/DoThis):

<%= Url.Action("DoThis", "MyController", null, Request.Url.Scheme, null) %>
他是夢罘是命 2024-12-02 16:25:12

几天前,我写了一篇关于该主题的博客文章(请参阅如何使用 UrlHelper 类构建绝对操作 URL)。正如 Darin Dimitrov 提到的:如果显式指定了 protocol 参数,UrlHelper.Action 将生成绝对 URL。

但是,为了便于阅读,我建议编写一个自定义扩展方法:

/// <summary>
/// Generates a fully qualified URL to an action method by using
/// the specified action name, controller name and route values.
/// </summary>
/// <param name="url">The URL helper.</param>
/// <param name="actionName">The name of the action method.</param>
/// <param name="controllerName">The name of the controller.</param>
/// <param name="routeValues">The route values.</param>
/// <returns>The absolute URL.</returns>
public static string AbsoluteAction(this UrlHelper url,
    string actionName, string controllerName, object routeValues = null)
{
    string scheme = url.RequestContext.HttpContext.Request.Url.Scheme;

    return url.Action(actionName, controllerName, routeValues, scheme);
}

然后可以像这样调用该方法:@Url.AbsoluteAction("SomeAction", "SomeController")

Some days ago, I wrote a blog post about that very topic (see How to build absolute action URLs using the UrlHelper class). As Darin Dimitrov mentioned: UrlHelper.Action will generate absolute URLs if the protocol parameter is specified explicitly.

However, I suggest to write a custom extension method for the sake of readability:

/// <summary>
/// Generates a fully qualified URL to an action method by using
/// the specified action name, controller name and route values.
/// </summary>
/// <param name="url">The URL helper.</param>
/// <param name="actionName">The name of the action method.</param>
/// <param name="controllerName">The name of the controller.</param>
/// <param name="routeValues">The route values.</param>
/// <returns>The absolute URL.</returns>
public static string AbsoluteAction(this UrlHelper url,
    string actionName, string controllerName, object routeValues = null)
{
    string scheme = url.RequestContext.HttpContext.Request.Url.Scheme;

    return url.Action(actionName, controllerName, routeValues, scheme);
}

The method can then be called like this: @Url.AbsoluteAction("SomeAction", "SomeController")

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文