1

以下のAS:NET / Mono MVC2 メソッドで は、Render a view as a stringを使用して HTML メール本文を作成します。

部分ビュー Order.ascx には次のような画像が含まれています

    <img width='20%' alt='' src='<%= Url.Action("Logo", "Store")%>' />

電子メールでは、これらの画像はサイト アドレスなしで表示/Store/Logoされるため、画像は表示されません。画像リンクを絶対アドレスで強制的に表示する方法htttp:/Mysite.com/Store/Logoや、HTML メール本文にサイト ベース アドレスを追加する方法が役立ちます。

ASP.NET / Mono MVC2 、.NET 3.5、jquery、jquery ui が使用されます。

コントローラ アクション メソッド:

        var s = RenderViewToString<OrderConfirm>("~/Views/Checkout/Order.ascx", order);

public class ControllerBase : Controller
{
    protected string RenderViewToString<T>(string viewPath, T model)
    { 
        ViewData.Model = 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();
        }
    }
4

1 に答える 1

3

:を使用するだけproper overloadです

<%= Url.Action("Logo", "Store", null, "http") %>

プロトコルを指定したので、ヘルパーは絶対URLを生成します。また、ハードコーディングしたくない場合は、現在のリクエストから読み取ることができます。

<%= Url.Action("Logo", "Store", null, Request.Url.Scheme) %>

これで、ビューの要求方法に応じて、標準スキームとHTTPSスキームの両方で機能します。

于 2013-03-11T12:42:31.233 に答える