在MVC中生成完整的URL?

Ban*_*hee 7 c# asp.net-mvc

可能重复:
如何在ASP.NET MVC中找到操作的绝对URL?
Asp MVC Action链接绝对URL

嗨,

有没有简单的方法来生成特定操作的完整URL?我试过这个:

urlHelper.Action("Action", "Controller")
Run Code Online (Sandbox Code Playgroud)

但这会产生"\".

最好的祝福

编辑1:我试过这个:

urlHelper.Action("List", "Ad", null, "http"); 
Run Code Online (Sandbox Code Playgroud)

但它只返回:localhost:16055.我期待像localhost:16055/Ad/List这样的东西?

Hus*_*vic 17

使用Html.ActionLink("链接标题","操作","控制器")

要生成完整链接,请使用:

@Html.ActionLink("Link Title", "Action", "Controller", "http", "www.mysampledomain.com", 
                 "_blank", new {id = paramValue}, new { @class="someClass" })
Run Code Online (Sandbox Code Playgroud)

这是您可以指定的所有参数的扩展重载.看看这篇MSDN文章http://msdn.microsoft.com/en-us/library/dd492938.aspx

要从Controller生成,请使用以下代码:

var url = UrlHelper.GenerateUrl(null, "MyAction", "MyController", "http", "www.mydomain.com", String.Empty, null, RouteTable.Routes, this.ControllerContext.RequestContext, false);
Run Code Online (Sandbox Code Playgroud)

url变量将包含URL的字符串表示形式.您可以将它存储在ViewBag中,如:

ViewBag.MyUrl = UrlHelper.GenerateUrl(null, "MyAction", "MyController", "http", "www.mydomain.com", String.Empty, null, RouteTable.Routes,
                                        this.ControllerContext.RequestContext, false);
Run Code Online (Sandbox Code Playgroud)

从View中调用它为:

@ViewBag.MyUrl
Run Code Online (Sandbox Code Playgroud)

那应该是它.

  • Html.ActionLink生成一个链接.如果您需要完整的网址,请使用Url帮助程序Url.Action.该方法的一个重载允许您指定Schema,这样做会生成一个完全限定的URL,如http:// localhost:1234/controller/action (2认同)