web-dev-qa-db-ja.com

MVCコントローラーでメッセージボックスを使用する方法

MVCアプリケーションを作成しました。ユーザーは登録する必要があり、それが完了したら、「ありがとう」ページにリダイレクトします。ただし、このメッセージをポップアップでユーザーに表示したいだけです。どうすればこれを達成できますか?

私のコード:

[HttpPost]
public ActionResult Enquiry(Enquiry enquiry)
{
    if (ModelState.IsValid)
    {
        dbEntities.Enquiries.AddObject(enquiry);
        dbEntities.SaveChanges();
        enquiry.SendEnquiryEmail(enquiry);

        return RedirectToAction("Thankyou"); 
    }

    return View(enquiry);
}

//redirect to thankyou page
public ActionResult Thankyou()
{
    return View();
}
9
Neo

@Reynolds

あなたの答えは完璧です。

Razorでは、次の行を置き換えることができます

alert("@TempData[alertMessage]");

以下によって

alert('@TempData["alertMessage"]');

PS。引用に注意してください

5

ビューの「アラート」が意図した場合(ThankYouメソッドからのリダイレクト)にのみ表示され、誰かが誤って「ThankYou」ビューに移動した場合に表示されないようにするため

//redirect to thankyou page
public ActionResult Thankyou()
{
    TempData["alertMessage"] = "Whatever you want to alert the user with";
    return View();
}

次に、「ありがとう」ビューで次のようにします。

   if(null != TempData["alertMessage"])
   {
      <script type="text/javascript">
       alert("@TempData[alertMessage]");
      </script>
   }

これにより、通常のJavaScriptと同じようにスクリプトが書き出されます。お役に立てれば!

13
Reynolds

コントローラでこのコードを使用します

public ActionResult Edit(CoverLetterModel model)
{
    TempData["msg"] = "<script>alert('Change succesfully');</script>";
}

ビューでこのコードを使用

@Html.Raw(TempData["msg"])
5
vicky

ユーザーが登録データを入力するビューに「ありがとう」メッセージボックスを表示したいようです。

その場合は、AJAX POST=アクションに追加し、クライアント側のJavaScriptでアクションから返される成功/失敗メッセージを処理する必要があります。 。

これを行う場合は、ユーザーが「送信」ボタンを複数回クリックしないようにする必要があるため、最初のクリック後に非表示または無効にして、検証エラーで表示/有効にすることができます。 ..

3
Tony Ranieri

Webでは、メッセージボックスを表示するためにJavaScriptを使用する必要があります。構文(ビューに移動するのは最も単純な形式です)

Alert("Hello There!");

これをコントローラーから直接呼び出すことはできません。上記のコードをThankYouビューに挿入するだけです。

これは非常に単純ですが、概念を説明する必要があります。

1
LiamB