2011-08-10 10 views
1

後、私は次のようにMVC2アプリケーションでアクションを持っている:MVC 2の問題ポスト

私の見解では
public ActionResult Index() 
    { 
     return View(new TestModel() { MyValue = "ValueBeforePost" }); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Index(TestModel m) 
    { 
     m.MyValue = "ValueSetInPost"; 
     return View(m); 
    } 

私はポストの後

<% using (MvcForm f = Html.BeginForm("Index", "Home")) %> 
<% { %> 
    <%= Html.TextBoxFor(m => Model.MyValue) %> 
    <input type="submit" value="Submit" /> 
<% } %> 

を持って、私の値私のアクション(m.MyValue = "ValueSetInPost")で設定した新しい値でテキストボックスに値が設定されていない場合、Request.Formに値が保持されているものからデータが読み込まれます(この場合はRequest.Form ["MyValue "は" ValueBeforePost "です。

投稿の値を変更するにはどうすればよいですか?

+0

をuを確認することができ、それが当たっていますそれ? –

+0

はいブレークポイントに当たっています – user887522

答えて

1

これが機能するには、ModelStateを操作する必要があります。詳細はrelated questionです。

テキストボックスヘルパーは、モデルステートのAttemptedValueを使用して、コントローラに送信された値でテキストボックスを再作成します。正味の効果は、ModelStateのデータが、ポストアクションでビューに渡されるモデルに入れたものを上書きすることです。あなたがあなたのModelStateから値を削除する必要が

1

はそれを修正しようとするまたはHTMLヘルパーは、元のPOSTされた値を使用します:あなたはポストにブレークポイントを置くとき

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(TestModel m) 
{ 
    ModelState.Remove("MyValue"); 
    m.MyValue = "ValueSetInPost"; 
    return View(m); 
}