ServiceStack.Razor从剃刀视图输出绝对URL

时间:2012-12-20 16:27:10

标签: c# razor servicestack

https://github.com/ServiceStack/RazorRockstars,好像很多。只是想知道是否有人可以帮我找到一种在使用自托管应用程序时从视图输出绝对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

更新

抱歉,我应该更清楚,我实际上是以一种非标准的方式使用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 个答案:

答案 0 :(得分:1)

在Razor ViewPageBase中,您可以访问HTTP base.Requestbase.Response,您可以在其中访问有关请求的元数据,例如base.Request.AbsoluteUri,它会返回当前的请求网址包含您想要的信息。