我需要将一些对象序列化为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。
答案 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>