传递相对URL ASP.NET MVC3

时间:2011-12-15 19:27:17

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing actionlink

我正在尝试将带有Id属性的URL列表从控制器传递到视图。 我可以传回一个<a href=...>链接,但我不认为写一个'localhost'绝对路径是一种干净的方式来接近它。我无法传回ActionLink,因为它返回完整的字符串。这是一个简单的解决方案吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用UrlHelper.Action()方法和Request对象的this重载,您可以获得完整的URL,包括路径参数,例如ID和应用程序的实际主机名。

string url = Url.Action("action", "controller", 
    new System.Web.Routing.RouteValueDictionary(new { id = id }), 
    "http", Request.Url.Host); 

UrlHelper在控制器中通过其Url属性提供。

然后,您可以将此类网址传递到您的视图中。

也可以在视图中直接使用UrlHelper来创建控制器操作的URL。取决于你是否真的需要在控制器内创建它们。


修改以回应评论:

无论您需要放置网址,您要查找的“网址构建器”仍然是UrlHelper。您只需将它(或生成的URL)传递到您需要的地方,就像它在控制器,视图或自定义助手中一样。

要获取您提到的未排序列表HTML结构中的链接,您需要将锚点放在列表项中,如下所示:

<ul>
    <li><a href="URL">Link</a></li>
    ...
</ul>

然后,你只需要从某个地方获取网址,这些网址来自UrlHelper

答案 1 :(得分:0)

简单易行。

 <a href="@Url.Action("action","controller",new {id = my_var_id})">text</a>

route id =将插入到方法中的参数。

例如。

function Details(int id) {
   //id has the value of my_var_id
 }