0

ユーザーに確認メールを送信するアプリが必要です。次のメソッドを使用して、ビューを文字列としてレンダリングしました。

    public string RenderViewToString<T>(string viewPath, T model)
    {
        using (var writer = new StringWriter())
        {
            var view = new WebFormView(viewPath);
            var vdd = new ViewDataDictionary<T>(model);
            var viewCxt = new ViewContext(ControllerContext, view, vdd, new TempDataDictionary(), writer);
            viewCxt.View.Render(viewCxt, writer);
            return writer.ToString();
        }
    }

私はここから得ました。うまく機能しますが、私の画像は含まれていません。私は使用しています:

<img src="<%:Url.Content("~/Resource/confirmation-email/imageName.png") %>"

私に与えているもの

http://resource/confirmation-email/imageName.png

これは、サイトでページを表示するときは正常に機能しますが、画像リンクは電子メールでは機能しません。

私は私にそれを与える必要があります:

http://domain.com/application/resource/confirmation-email/imageName.png

私も使ってみました:

VirtualPathUtility.ToAbsolute()
4

2 に答える 2

1

これは私が最近サイトで使用したものです:

public static string ResolveServerUrl(string serverUrl, bool forceHttps = false, bool getVirtualPath = true)
{
    if (getVirtualPath)
    serverUrl = VirtualPathUtility.ToAbsolute(serverUrl);

    if (serverUrl.IndexOf("://") > -1)
    return serverUrl;

    string newUrl = serverUrl;
    Uri originalUri = System.Web.HttpContext.Current.Request.Url;
    newUrl = (forceHttps ? "https" : originalUri.Scheme) + "://" + originalUri.Authority + newUrl;
    return newUrl;
}

Core.ResolveServerUrl("~/Resource/confirmation-email/imageName.png");次に、それを使用して、(静的関数をCoreという名前のクラスでラップすると仮定して)実行することで絶対URLを生成できます。

HTH

于 2012-05-24T15:43:31.487 に答える
0

これを行う方法はありません。次の拡張メソッドを追加できます。

using System.Web.Mvc;

public static class UrlHelperExtensions
{
    public static string ToAbsoluteUrl(this UrlHelper helper, string relativeUrl) {
        if (Request.IsSecureConnection)
            return string.Format("https://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
        else
            return string.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
    }
}

あなたはそのように呼び出すことができます

<img src="<%:Url.ToAbsoluteUrl("~/Resource/confirmation-email/imageName.png") %>" ...
于 2012-05-24T15:38:53.627 に答える