2013-02-11 94 views
0

我需要序列化一些對象到xml中,它具有字符串屬性「Url」 - 由一些操作方法返回的頁面url(在asp.net mvc 3應用程序中,我想實現自定義rss)。如何獲取操作方法返回的Uri視圖?

我想調用的操作方法我只需要實例化的這種方法屬於:)

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

但我怎麼能得到通過這種操作方法返回的頁面的URL控制器?

編輯1:由於@SLaks回答,我們可以使用Url.Action()獲得操作方法的url,但我怎麼可以通過這個網址到XML文件?如果我只將Url.Action()的結果分配給link,它將顯示字符串:MyController/MyAction。

回答

2

操作方法返回的頁面沒有URL。

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

您可以通過調用Url.Action(actionName, controllerName)來獲取操作的URL。

+0

但是當我序列Url.Action()成XML的結果,只有純文本appeares: myController的/ MyAction。我如何將action方法返回的url傳遞給xml文件? – 2013-02-11 15:00:46

+0

@AkseiChepovoi:你實際上在問如何獲取你的服務所暴露的域名。使用'HttpContext.Request.Url'屬性 – SLaks 2013-02-11 18:39:36

+0

謝謝,我已經得到它 – 2013-02-11 19:14:17

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> 
+0

編譯器看不到Request.IsSecureConnection,Page.ResolveUrl,似乎沒有這樣的方法或者你的意思是他們是自定義的?無論如何,這個概念很清楚,不知道爲什麼我沒有自己弄清楚:)謝謝! – 2013-02-11 17:37:45

+1

@AlekseiChepovoi,看我的編輯 – Dmytro 2013-02-12 02:04:31

相關問題