18

エラーメッセージ、検証エラーなどについては、

ModelState.AddErrorMessage("Fool!");

しかし、「あなたはあなたの元にたくさんのお金をうまく送金した」のような成功の応答をどこに置きますか?+「残高はゼロになりました」。それでも、コントローラーレベルで、できればKey-Valueの方法で、エラーメッセージと同じように、ただしmodelstateを無効にせずに設定したいと思います。

これは通常どのように行われますか?ViewData?

4

3 に答える 3

23

TempData ["success"](または与えたいキー)にコントローラー内に表示したいメッセージを入力し、適切にリダイレクトします(たとえば、ユーザーを編集する場合は、ユーザーリストにリダイレクトします)。 。これはPOST/リダイレクト/GETパターンに依存しています-とにかく良い習慣です。

TempData["success"] = "Your Balance is now zero";

マスターページには、その変数をチェックし、メッセージを素敵なスタイルのdivで表示するセクションがあります。次のようなもの(100%正しくない場合があります):

<% if(TempData["success"] != null) { %>
      <div id="SuccessMessage"><%= Html.Encode(TempData["success"]) %><div>
<% } %>
于 2010-01-27T00:32:37.803 に答える
7

modelstateをチェックして、モデルに変数を設定できると思います...

public ActionResult MyAction(MyEntity model)
{
  //Here would be some validation, which returns with ModelState errors

  //Now set the validity of the modelstate as the IsValid property in your entity
  model.IsValid = ModelState.IsValid;

  return View(model);
}

あなたの見解では...

<% if(Model.IsValid) { %>
  <p>You successfully transfered your balance to your ex.</p>
<% } %>

編集:あなたの更新された質問を考えると、私はあなたが間違ったアプローチを取ることを考えていると思います。私は他の答えと一緒に行き、PRGパターンに従います。これは、偽のエラーを追加しようとするよりも間違いなく理にかなっています。

于 2010-01-26T22:50:03.407 に答える
0

すべての検証が検証され、すべてが正常に実行された後、POST / Redirect / GETパターンのようなものを実装し、アクションメソッドの最後に別のビューに「リダイレクト」する必要があります。オブジェクトインスタンス全体を宛先ビューに渡すか、プレーンテキストメッセージを渡すか、宛先ビュー自体のテキストをweb.configまたはリソースファイルから引き出すことができます。

たとえば、共有フォルダーに「ChangeSuccess.aspx」という名前のビューが1つあり、成功したすべての編集と作成にリダイレクトします。

あなたはこのように「リダイレクト」します

return View("ChangeSuccess", objectInstance);

(注:実際にはリダイレクトされません。コメントを参照してください)

于 2010-01-27T00:04:02.960 に答える