【问题标题】:URLs for e-mailing in ASP.NET MVCASP.NET MVC 中的电子邮件 URL
【发布时间】:2009-02-12 02:16:20
【问题描述】:

如何为要包含在电子邮件中的 MVC 应用程序生成正确的 URL?

这适用于我的注册系统,它与我的控制器/操作分开。基本上,我想发送一封电子邮件验证来触发控制器上的操作。我不想硬编码 URL,我想要 Views 上的 Url 属性。

【问题讨论】:

    标签: asp.net asp.net-mvc url-routing


    【解决方案1】:

    在您的控制器中,UrlHelper 只是称为“Url” - 所以:

    void Index() {
        string s = this.Url.Action("Index", "Controller");
    }
    

    “this”是不必要的,但它告诉你这个 Url 变量来自哪里

    【讨论】:

    • 这对我不起作用,因为我正在使用我的 Provider/Service 模型。我的 Provider/Service 中需要一些东西,而不是我的控制器。
    【解决方案2】:

    我用过:

    Html.BuildUrlFromExpression<AccountController>(c=>c.Confirm(Model.confirmedGUID.Value))
    

    它是 HTMLHelper 的一部分(我认为在 MVC Futures 中),因此您可能必须将 HTMLHelper 的实例传递给您的服务层,但不确定。我直接在我的视图中使用它来呈现给电子邮件。这为您提供了绝对 URL,然后我将域 (http://www.mysite.com) 存储在配置文件中并将其附加到 URL 之前。

    【讨论】:

      【解决方案3】:

      您可能应该将 URL 作为应用程序配置的一部分。

      我知道你可以做一些事情,例如Web 应用程序上的 Server 属性,但应用程序永远不会知道其 IP 或域名是否可以从外部访问,因为它可能隐藏在代理或负载平衡器后面。

      【讨论】:

        【解决方案4】:

        如果我没有正确阅读问题,您需要在 MVC 代码之外进行控制器/操作。如果是这样,您只需在应用程序配置或类似的地方配置 URL,除非您有权访问控制器类并使用反射来获取名称。

        【讨论】:

          猜你喜欢
          • 2016-08-06
          • 2020-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多