1

メールを送信しようとするとエラーが発生します。

NoViewsFoundException

このメールのビューを提供する必要があります。ビューには、レンダリングする形式に応じて、〜/ Views / Email / VerificationEmail.html.vbhtml.txt.cshtmlまたは〜/ Views / Email / VerificationEmail.html.vbhtml.html.cshtml(またはWebFormsViewEngineの場合はaspx)という名前を付ける必要があります。

オンラインエラー:

Return Email("~/Views/Email/VerificationEmail.html.vbhtml", model)

メールを.vbhtmlで送信することはできませんが、.cshtmlで送信する必要がありますか?これはVBでどのように機能しますか?

これが私のコードコントローラーです:

Imports ActionMailer.Net.Mvc

Public Class EmailController
    Inherits MailerBase

    Public Function VerificationEmail(ByVal model As RegisterModel) As EmailResult

        [To].Add(model.Email)
        From = "me@my.org"
        Subject = "Thanks for registering with us!"
        Return Email("~/Views/Email/VerificationEmail.html.vbhtml", model)

    End Function

End Class

これが私の見解です:

@modelType MyBlog.RegisterModel

@Code
    Layout = Nothing
End code

Welcome to My Cool Site, @Model.UserName

We need you to verify your email.  Click this nifty link to get verified!

@Html.ActionLink("Verify", "Account", New With {.code = Model.Email})

Thanks!
4

3 に答える 3

4

いくつかの問題を読んで答えた後、これで動作するようになる可能性があります:

public override string ViewPath {
        get { return AppDomain.CurrentDomain.BaseDirectory + @"\EmailTemplates\"; }
    }
于 2013-08-01T03:07:42.127 に答える
2

もちろんvbhtml、名前に注意する必要がある電子メールテンプレートを使用することもできます(.cshtml例外メッセージはハードコーディングされているため、混乱しないでください)。

呼び出しVerificationEmail.html.vbhtmlでビュー名からすべてのプレフィックスを削除する必要があるため、ビューには正しい名前が付けられます。Email

Return Email("VerificationEmail", model)

ActionMailerは自動的にプレフィックスを追加し、適切なテンプレートを選択するためです。

現在、 egで始まるような相対ビュー名は使用できないことに注意してください(これがバグなのか機能なのかはわかりません)。~"~/Views/..."

したがって、メールテンプレートを通常のビューフォルダに配置する必要があります。

  • /Views/{MailControllerName}/
  • /View/Shared/
于 2012-08-20T15:39:02.810 に答える
1

チャドリチャードソンと同じ問題がありました。他のエリアから電子メールを送信しようとしたときに発生する問題を解決するには、次のコードをApplication_Startメソッドに追加するだけです。

var razorEngine = ViewEngines.Engines.OfType<RazorViewEngine>().First();
    razorEngine.ViewLocationFormats = razorEngine.ViewLocationFormats.Concat(new string[] 
    { 
        "~/Areas/.../{0}.cshtml"
    }).ToArray();
于 2013-10-22T14:37:12.353 に答える