我有一个 asp.net-mvc 站点,我从我的站点发送了很多电子邮件。在我以前从我的控制器发送电子邮件并使用此代码获取基本 URL 之前:
protected string GetBaseUrl()
{
return string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));
}
那是因为我显然需要完整的 URL。因此,在我拥有 href="/GoHere" 的页面上的普通链接中,我希望将其翻译为:
"http://www.mysite.com/GoHere"
不仅仅是相对 URL,因为它们会出现在电子邮件中,例如
"/GoHere"
我现在正在重构我的控制器以将所有这些代码移出它,但我发现自己传递了这个 baseURL 字符串(因为上面的函数依赖于名称空间中的 Request:
System.Web
而且我似乎无法在控制器类之外访问此请求对象。现在我在整个地方都传递了一个字符串BaseURL,所以当我需要生成电子邮件时,我可以在基本 URL 之后附加相对 URL,但这感觉很 hacky
有没有更好的方法在 asp.net-mvc 网站的控制器类之外获取 baseURL(通过 Request 对象或不通过)?