如何通过action方法返回Uri视图?

时间:2013-02-11 14:50:37

标签: c# .net asp.net-mvc-3 uri actionmethod

我需要将一些对象序列化为xml,其中包含字符串属性“Url” - 某些操作方法返回的页面的url(在asp.net mvc 3应用程序中我想实现自定义rss)。

我想调用action方法我只需要实例化这个方法所属的控制器:)

MyController c = new MyContrroller();
c.MyActionMethod();

但是如何获取此操作方法返回的页面的URL?

编辑1:由于@SLaks已回答我们可以使用Url.Action()来获取操作方法网址,但是如何将此网址传递给xml文件?如果我只是将Url.Action()的结果分配给link,它将显示字符串:MyController / MyAction。

2 个答案:

答案 0 :(得分:2)

操作方法返回的页面没有URL。

相反,操作方法本身具有来自路由引擎的URL。

您可以通过调用Url.Action(actionName, controllerName)来获取操作的网址。

答案 1 :(得分:1)

我认为没有内置的方法可以满足您的需求。你必须手动完成。例如,如下所示:

public static class UrlExtension
{
    public static string ToAbsoluteUrl(this string relativeUrl, HttpContext httpContext)
    {
        string http = "http" + (httpContext.Request.IsSecureConnection ? "s" : string.Empty);
        string host = httpContext.Request.Url.Host;
        string port = httpContext.Request.Url.Port == 80 ? string.Empty : string.Format(":{0}", httpContext.Request.Url.Port);            

        return string.Format("{0}://{1}{2}{3}", http, host, port, relativeUrl);
    }
}

示例:

<a href="@Url.Action("Index", "Home").ToAbsoluteUrl(HttpContext.Current)">Index</a>
<a href="@Url.Action("TestAction", "Home").ToAbsoluteUrl(HttpContext.Current)">TestAction</a>

渲染结果:

<a href="http://localhost/">Index</a>
<a href="http://localhost/Home/TestAction">TestAction</a>