現在、私のサイトでJQuery UIダイアログを使用しています。しかし、私は最近、ダイアログでトリガーされたさまざまなアクションの成功/失敗の通知のために、MVC TempDataコレクションを使用し始めました。特に派手でも新しいものでもない。しかし、それは私がシンプルで明らかに解決策を見つけることができないという問題を提起しています。AJAXなしのJQuery UIダイアログからのMVCメソッドの呼び出し
私のダイアログの中には、データの提出が成功したときに新しいページにリダイレクトされます。このデータはjQuery.Postを使用して送信されており、ページ上のwindow.locationを使用して正常に送信されたときにリダイレクトを行います。ただし、コントローラメソッドで設定したTempDataは使用できません。これを処理するには、ActionResultの戻り値の型が必要なようです。
私の質問は、JQuery UI Dialogsを使用して、jQuery POSTまたはAJAX呼び出しを使用せずにデータをコントローラに送信する方法として人々が提案するものでした。明らかに私はダイアログ内にフォームを埋め込み、それを使用することができますが、JQuery UI Dialogを使用する際にはボタンをすべて処理するなどの点で半分になります。
多分私は本当に明白な何かが欠けているかもしれませんが、どんな助けも大歓迎です。どうもありがとう。
更新:これはActionメソッド全体です。 NB - これは実装の1つで、実際にはいくつかの方法で試しました。しかし、これは現在の実装です。アクションが呼び出され、私たちはクライアント側のリダイレクトを行うされたら、私が設定したTempDataを、NULLとして出てくる
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public void RetireSelf(int playerKey)
{
PlayerDTO player = _playerTask.GetPlayer(playerKey);
_log.Info("Player retiring themselves from ladder " + player.Name + player.PlayerKey);
UserDTO user = _userTask.GetUser(CurrentUserName);
if (user.UserKey != player.UserKey)
{
throw new LadderSecurityException(CurrentUserName + "trying to self retire another player");
}
_playerTask.RetirePlayer(playerKey);
TempData["notification"] = "You were retired from the ladder.";
}
あなたは言った:しかし、これはコントローラメソッドで設定したTempDataは使用できないことを意味します。これを処理するにはActionResultの戻り値の型が必要なようです。コードを投稿して、POSTアクションでTempDataをどのように使用していますか? –
確かに、とても簡単です。 POSTアクションでは、次のコード行があります。 TempData ["notification"] = "通知はここにあります。 非常に単純ですが、次のリクエストでは常にNULLとして出力されます。私たちが非AJAX呼び出しを介してメソッドを呼び出すときだけ、それは期待どおりに出てきます。 – pauldunlop
私はコードサンプルといくつかの情報を含めるように投稿を更新しました。 – pauldunlop