私はMVC3 C#.Net Webアプリケーションを持っています。 Excel機能からのインポートがあります。この機能は、RateコントローラのImportメソッドで実行されます。レート/インポートビューで表示されます。インポート時には、一部の行は正常に実行され、一部は正常に実行されません。私は文字列[]配列にエラーを集めています。 1つ以上の行が正常にインポートされた場合、インポートは成功したものとみなされます。したがって、アプリケーションはプロポーザル編集ビューに戻るようにナビゲートします。情報エラーをプロポーザル編集ビューに戻して表示したいと考えています。どのようにこれを行うには?MVC3があるコントローラから別のビューやコントローラにメッセージを渡す
0
A
答えて
3
いくつかの方法があります。
TempDataを
これはあなたのコントローラで利用可能です。 TempDataは、1回のリダイレクトにわたって保持されます。
public ActionResult Process()
{
// ... Process your rows, get array of errors back ...
TempData["errors"] = errors;
return RedirectToAction("Edit");
}
public ActionResult Edit()
{
var errors = (IEnumerable<string>)TempData["errors"]; // Get the errors back.
return View(errors); // Pass into the view
}
にModelState
あなたは直接にModelStateにこれらのエラーを追加し、編集フォームを再表示することができます。リダイレクトを超えても持続しません。
public ActionResult Process()
{
// ... Process your rows, get array of errors back ...
for(var i = 0; i < errors.Length; i++)
{
ModelState.AddModelError("row" + i, errors[i]);
}
// Can't redirect here - ModelState doesn't persist.
return View("Edit");
}
次に、あなたの編集ビューでは、単に検証の概要を表示します。
@Html.ValidationSummary("The following row errors occured:");
これは、このHTMLをレンダリングします。クラスは、MVCによって設定されたデフォルトのクラスです。
<div class="validation-summary-errors">
<span>The following row errors occured:</span>
<ul>
<li>...Error 1...</li>
... Other errors ...
</ul>
</div>
関連する問題
- 1. MVC3コントローラから別のコントローラにデータを渡す
- 2. MVC3:別のコントローラからの別のコントローラからビューを呼び出す方法
- 3. 応答をあるコントローラから別のコントローラに渡すには?
- 4. あるコントローラから別のコントローラにデータを渡す
- 5. コントローラからユーザーコントロールのプロパティをMVC3のビューに渡す
- 6. あるコントローラから別のコントローラへのエラーメッセージの受け渡し
- 7. ビューからコントローラへAJAXスクリプトにメッセージを渡す
- 8. MVC3コントローラからコントローラへデータを渡す方法
- 9. コントローラからビューにHTMLを渡す
- 10. AngularJSはコントローラから別のコントローラにデータを渡します
- 11. MVC4ビューからコントローラへモデルを渡す
- 12. ビューからコントローラへViewModelを渡す
- 13. MVCコントローラから別のビューを返す
- 14. 別のコントローラのビューからアクションへの値の受け渡し
- 15. カスタム引数をmvc3のコントローラに渡す
- 16. MVC3コントローラの中央にビューを表示
- 17. モデルを渡してビューからコントローラに再び渡します
- 18. ASP.NET MVC3:別のプロジェクトのビューとコントローラを呼び出す
- 19. コントローラからのビューに情報を渡し、asp.net mvcでコントローラに戻す方法はありますか?
- 20. MVC - ビューからコントローラにデータを渡す必要があります
- 21. 別のビュー/コントローラから新しいセッションやユーザを作成する
- 22. コントローラからjavascriptにphp変数をビューの先頭に渡す
- 23. フォームの値と一緒にビューからコントローラにデータを渡す
- 24. 私のコントローラでは、コントローラMVC3
- 25. コントローラからMVC 3のビューにリストを渡す方法
- 26. codeigniterのビューからコントローラにデータを渡す
- 27. grailsのビューからコントローラにモデルを渡す方法
- 28. コントローラからYiiのビューに変数を渡す
- 29. コントローラからビューをモデルに渡すMVCの混乱
- 30. コントローラからシンプルなデータをcakePHPのビューに渡す方法
「アプリがプロポーザル編集に戻る」とは、フォームの送信後にリダイレクトを行っているということですか?そうであれば、情報を格納できる唯一の場所はデータベースにあります(IDを他のコントローラーに渡して文字列を検索する)、セッション中またはクッキー内にあります。 ViewBag/ViewDataのライフサイクルは、リクエストの有効期限で終了します。リダイレクトは、ブラウザから新しい「リクエスト」を作成します。 –