0

MVC サイトにフィードバック フォームがあり、このフォームをメールで送信しています。
私のコントローラーでは、メール送信が失敗した場合に ErrorMessage を作成し、メール送信が成功した場合に SuccessMessage を作成しました

/*Feedback*/
[HttpGet]
public ActionResult Feedback(string ErrorMessage)
{
    if (ErrorMessage != null)
    {
    }

    return View();
}

[HttpPost]
public ActionResult Feedback(FeedbackForm Model)
{
    string ErrorMessage, SuccessMessage;

    //email
    System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
    msg.BodyEncoding = Encoding.UTF8;
    msg.Priority = MailPriority.High;

    msg.From = new MailAddress(Model.Email, Model.Name);
    msg.To.Add("tayna-anita@mail.ru");

    msg.Subject = @Resources.Global.Feedback_Email_Title + " " + Model.Company;
    string message = @Resources.Global.Feedback_Email_From + " " + Model.Name + "\n"
                    + @Resources.Global.Feedback_Email + " " + Model.Email + "\n"
                    + @Resources.Global.Feedback_Phone + " " + Model.Phone + "\n"
                    + @Resources.Global.Feedback_Company + " " +  Model.Company + "\n\n"
                    + Model.AdditionalInformation;
    msg.Body = message;
    msg.IsBodyHtml = false;

    //Attachment
    if (Model.ProjectInformation != null && !(String.IsNullOrEmpty(Model.ProjectInformation.FileName)))
    {
        HttpPostedFileBase attFile = Model.ProjectInformation;
        if (attFile.ContentLength > 0)
        {
            var attach = new Attachment(attFile.InputStream, attFile.FileName);
            msg.Attachments.Add(attach);
        }
    }

    SmtpClient client = new SmtpClient("denver.corepartners.local", 55);
    client.UseDefaultCredentials = false;
    client.EnableSsl = false;

    try
    {
        client.Send(msg);
        SuccessMessage = "Email sending was successful"
    }

    catch (Exception ex)
    {
        return RedirectToAction("Feedback", "Home", ErrorMessage = "Email sending failed");
    }

    return RedirectToAction("Feedback", "Home");
}

ビューにこのメッセージを表示するにはどうすればよいですか?

4

3 に答える 3

0

次のように、モデル プロパティとしてそれらにアクセスしようとすることはできませんか。

<%= Model.ErrorMessage %>

<%= Model.SuccessMessage %>
于 2013-06-03T07:33:31.603 に答える
0

TempDataを使用します。

ViewDataDictionary オブジェクトを使用するのと同じ方法で、TempDataDictionary オブジェクトを使用してデータを渡すことができます。ただし、TempDataDictionary オブジェクト内のデータは、Keep メソッドを使用して 1 つ以上のキーに保持用のマークを付けない限り、1 つの要求から次の要求までのみ保持されます。キーが保持対象としてマークされている場合、そのキーは次の要求のために保持されます。

TempDataDictionary オブジェクトの一般的な用途は、アクション メソッドが別のアクション メソッドにリダイレクトするときに、アクション メソッドからデータを渡すことです。たとえば、アクション メソッドは、RedirectToAction メソッドを呼び出す前に、コントローラーの TempData プロパティ (TempDataDictionary オブジェクトを返す) にエラーに関する情報を格納する場合があります。次に、次のアクション メソッドでエラーを処理し、エラー メッセージを表示するビューをレンダリングできます。

[HttpPost]
public ActionResult Feedback(FeedbackForm Model)
{
    bool error = true;
    
    if(error){
        TempData["Message"] = "Error";
        TempData["Error"] = true;            
    }
    else{
        TempData["Message"] = "Success";
        TempData["Error"] = false;            
    }

    return RedirectToAction("Feedback", "Home");
}

[HttpGet]
public ActionResult Feedback()
{
    string message = TempData["Message"].ToString();
    bool error = Convert.ToBoolean(TempData["Error"]);

    var model = new FeedbackModel{Message = message, Error = error};

    return View(model);
}
于 2013-06-03T09:03:21.317 に答える
0

新しいページにリダイレクトしているので、リダイレクト後の次のリクエストで使用できる TempData を使用します。メッセージを TempData["Message"] に入れ、Feedback ビューに出力します。より良くするには、次のことを確認してください

     <% TempData["Message"] != null { %>
     <%= TempData["Message"] %>;
     <%} %>
于 2013-06-03T07:26:59.690 に答える