0

特定のアクションパラメータがリクエスト間でその値を保持しないようにすることは可能ですか?

[HttpPost]
public ActionResult MyAction(string value1, string value2)
{
        if(value1=="hi")
             ModelState.AddModelError("value1", "Can't have hi");
        //do stuff
        if(ModelState.IsValid)
           return RedirectToAction("Finish");
        else
           return View()
}


[HttpGet]
public ActionResult MyAction()
{
        return View()
}

ビューは、2つの入力ボックス(value1とvalue2)を持つ単純なフォームで構成されています。送信されて検証が失敗すると、ビューが返されます。ビュー内のテキストボックスの値を常に空にしたい。

モデルが無効化された場合、テキストボックス「value1」の値は保持されます。

テキストボックスを<%= Html.TextBox( "value1"、null)%>として宣言しようとしましたが、値は保持されます。[Bind(Exclude = "value1")]も使用しようとしましたが、単一の変数では機能しません。

アップデート2:

これは、キャプチャ(カスタムソリューション)入力に使用されるテキストボックスに対して実行しています。ページが読み込まれるたびにテキストボックスをクリアしたいのですが、検証はそのままにしておきたいです。

4

2 に答える 2

4

電話してみてください

ModelState["value1"].Value 
  = new ValueProviderResult(null, string.Empty, CultureInfo.InvariantCulture);

コントローラアクション内からビューを返す前に。

これは、キー「value1」に関連するすべてのエラーを保持しますが、値を空の値に置き換えます。

于 2009-10-28T23:57:24.690 に答える
3

何をしているので、それが保持されますか?コードを記述したり、フォームフィールドを使用して作成したりしない限り、MVCのViewStateのように複数のリクエストに対して値を保持するものはありません。

ビューはどのように見えますか?このアクションメソッドはGETまたはPOSTを介して呼び出されていますか?あなたのメソッドに含まれている「何かをする」とは何ですか?

編集:あなたはまだあなたのサンプルコードで//何かをしていることを示しています。そのようなものにはViewDataへの参照が含まれていますか?あなたの質問はバインディングについてですが、バインディングが発生しているのはわかりません。多分これは私の理解を超えています。

編集2:うれしいフィルはこれを見ました!元の質問では、ModelStateについては言及されていませんでした。

于 2009-10-27T06:01:14.417 に答える