0

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

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

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

但是我怎样才能得到这个action方法返回的页面的url呢?

编辑 1:正如@SLaks 回答的那样,我们可以Url.Action()用来获取操作方法 url,但我怎样才能将此 url 传递给 xml 文件?如果我只是将结果分配给Url.Action()link,它将显示字符串:MyController/MyAction。

4

2 回答 2

2

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

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

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

于 2013-02-11T14:54:49.860 回答
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>
于 2013-02-11T16:36:29.210 回答