【发布时间】:2013-09-08 12:36:43
【问题描述】:
我有一个 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 对象或不通过)?
【问题讨论】:
标签: asp.net-mvc url