如何为要包含在电子邮件中的 MVC 应用程序生成正确的 URL?
这适用于我的注册系统,它与我的控制器/操作分开。基本上,我想发送一封电子邮件验证来触发控制器上的操作。我不想硬编码 URL,我想要 Views 上的 Url 属性。
如何为要包含在电子邮件中的 MVC 应用程序生成正确的 URL?
这适用于我的注册系统,它与我的控制器/操作分开。基本上,我想发送一封电子邮件验证来触发控制器上的操作。我不想硬编码 URL,我想要 Views 上的 Url 属性。
在您的控制器中,UrlHelper 只是称为“Url” - 所以:
void Index() {
string s = this.Url.Action("Index", "Controller");
}
“this”是不必要的,但它会告诉你这个 Url 变量来自哪里
我用了:
Html.BuildUrlFromExpression<AccountController>(c=>c.Confirm(Model.confirmedGUID.Value))
它是 HTMLHelper 的一部分(我认为在 MVC Futures 中),因此您可能必须将 HTMLHelper 的实例传递给您的服务层,不确定。我直接在我的视图中使用它来呈现给电子邮件。这为您提供了绝对 URL,然后我将域 ( http://www.mysite.com ) 存储在配置文件中并将其附加到 URL 之前。
如果我正确阅读了问题,则需要在 MVC 代码之外进行控制器/操作。如果是这样,您只需在应用程序配置或类似的地方配置 URL,除非您有权访问控制器类并使用反射来获取名称。
您可能应该将 URL 作为应用程序配置的一部分。
我知道您可以使用 Web 应用程序上的 Server 属性来做一些事情,但应用程序永远不会知道其 IP 或域名是否可以从外部访问,因为它可能隐藏在代理或负载平衡器后面。