首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取ASP.NET MVC中操作的完整URL

获取ASP.NET MVC中操作的完整URL
EN

Stack Overflow用户
提问于 2010-01-05 18:30:09
回答 6查看 303.9K关注 0票数 399

有没有一种内置的方法来获取一个动作的完整URL?

我正在寻找像GetFullUrl("Action", "Controller")这样的东西,它会返回像http://www.fred.com/Controller/Action这样的东西。

我这样做的原因是为了避免在自动生成的电子邮件中硬编码URL,这样URL就可以始终相对于网站的当前位置生成。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-05 18:37:28

有一个Url.Action重载,它接受你想要的协议(例如http,https)作为参数-如果你指定了它,你会得到一个完全限定的URL。

下面是一个在action方法中使用当前请求的协议的示例:

代码语言:javascript
复制
var fullUrl = this.Url.Action("Edit", "Posts", new { id = 5 }, this.Request.Url.Scheme);

razor (@Html)也有一个ActionLink方法的重载,您可以在HtmlHelper中使用它来创建锚元素,但它也需要hostName和fragment参数。所以我选择再次使用@Url.Action:

代码语言:javascript
复制
<span>
  Copy
  <a href='@Url.Action("About", "Home", null, Request.Url.Scheme)'>this link</a> 
  and post it anywhere on the internet!
</span>
票数 608
EN

Stack Overflow用户

发布于 2011-07-22 07:19:25

正如帕迪提到的:如果您使用显式指定要使用的协议的 UrlHelper.Action() URL的重载,则生成的将是绝对的和完全限定的,而不是相对的。

我写了一篇名为How to build absolute action URLs using the UrlHelper class的博客文章,其中我建议出于可读性的考虑编写一个自定义扩展方法:

代码语言:javascript
复制
/// <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);
}

然后,您可以在视图中像这样简单地使用它:

代码语言:javascript
复制
@Url.AbsoluteAction("Action", "Controller")
票数 138
EN

Stack Overflow用户

发布于 2017-01-31 17:07:49

这就是你需要做的。

代码语言:javascript
复制
@Url.Action(action,controller, null, Request.Url.Scheme)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2005367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档