ユーザーがフォーム内のドロップダウン ボックスで行った選択に応じて、フォームのアクションを変更する必要があります。.NET 4.5 に MVC4/C# プロジェクトがあります。
ユーザーが行う選択は、どのコントローラーまたはどのアクションを呼び出す必要があるかに影響します。
少し調べてみたところ、いくつかの解決策にたどり着きました。
- JQuery クライアント側を実装して、フォームのアクションを動的に変更する
- リクエストを適切なコントローラー/アクションにルーティングする専用の特定のアクションにフォームを移動させます
私が読んだことによると、クライアントが JavaScript を実行していることを確認できないため、JQuery を使用しないことをお勧めします。また、同様の問題もあります。
ここで 2 番目のオプションを試してみましRedirectToAction
た。スイッチ ブロック内でルーティングを実行しようとしましたが、リダイレクトによって GET が発生するため、POST データでは機能しません。
コントローラー内で私が試みたものの例は次のとおりです。
[HttpPost]
public ActionResult Index(TestObject object)
{
switch (object.Type) {
case("A"):
return RedirectToAction("ActionA");
case ("B"):
return RedirectToAction("ActionB");
case ("C"):
return RedirectToAction("ActionC");
default:
ModelState.AddModelError("", "Invalid Type");
return View();
}
}
[HttpPost]
public ActionResult ActionA(TestObject object)
{
// Do Stuff for ActionA
return View();
}
これは私が作成した最初の MVC プロジェクトなので、このような状況で JQuery を使用しないように誰もが言い続ける場合、どのように考えるのが適切なのか疑問に思っています。
2 番目のオプションが「適切な」解決策である場合、代替コントローラー アクションにデータを送信するにはどうすればよいですか?