2012-12-20 21 views
3

圍繞https://github.com/ServiceStack/RazorRockstars發揮作用,喜歡它很多。想知道是否有人可以幫助我找到一種方法來在使用自託管應用程序時從視圖中輸出絕對URL?ServiceStack.Razor從剃鬚刀視圖輸出絕對URL

這是一樣好,我可以想出:

public static class UrlHelperExtensions 
{ 
    public static string AbsoluteContent(this UrlHelper urlHelper, string path) 
    { 
     var baseUri = new Uri(EndpointHost.AppHost.Config.WebHostUrl); 
     return new Uri(baseUri, path).ToString(); 
    } 
} 

凡AppHost.Config.WebHostUrl被我設置在主機配置

UPDATE

對不起,我應該更清楚一點,我實際上是以一種非標準的方式使用ServiceStack - 作爲呈現電子郵件模板的一種手段。所以我有一個服務,如:

public class EmailService : Service 
{ 
    public void Post(EmailTask request) 
    { 
     var format = GetAppHost().Plugins.Find(x => x is RazorFormat) as RazorFormat; 
     var template = format.ExecuteTemplate(request.Model, request.Template.ToString(), string.Empty); 
     var html = template.Result; 
     // email the rendered template etc 
    } 
} 

當模板被渲染,Request對象爲null

回答

1

在剃刀ViewPageBase你可以訪問HTTP base.Requestbase.Response在這裏你可以對訪問元數據像base.Request.AbsoluteUri這樣的請求,它返回當前的請求URL,它應該包含你想要的信息。

+0

對不起,我還不夠清楚,看到更新以上 – Brendan

+0

這不是我們支持的用例。但是爲什麼'Request'是空的。如果你打算像這樣離線使用它,我建議你將Url傳入你的模型。也請不要在將來的Q中留下類似這樣的關鍵信息,因爲它不必要地浪費了回答者的時間。 – mythz