2011-02-04 13 views
19

モデルからのデータを表示するビューがあります。ボタンを送信してonClickイベントがモデルの値を変更する必要があります。モデルの値を別の値に渡しますが、TextBoxForの値はページの読み込み時と同じです。どうすれば変更できますか?MVC - 投稿時にモデルの値を変更する

+0

任意のソースコードがなければ、非常によく似たシナリオでそれを試してみました – Tx3

答えて

39

これは、HTMLヘルパーの動作方法であり、仕様です。彼らは最初に、POSTされたデータを見て、その後、モデルでそれを見ます。だから、例えば、あなたが持っている場合:あなたは、次のアクションに掲載されている

<% using (Html.BeginForm()) { %> 
    <%= Html.TextBoxFor(x => x.Name) %> 
    <input type="submit" value="OK" /> 
<% } %> 

:ビューが使用される古い値を再表示され

[HttpPost] 
public ActionResult Index(SomeModel model) 
{ 
    model.Name = "some new name"; 
    return View(model); 
} 

。一つの可能​​な回避策はにModelStateから値を削除することです:

[HttpPost] 
public ActionResult Index(SomeModel model) 
{ 
    ModelState.Remove("Name"); 
    model.Name = "some new name"; 
    return View(model); 
} 
+0

どんな答えを出すことは不可能です。..動作するようには思えません。任意のヘルプはここで評価されます - http://stackoverflow.com/questions/12138552/trying-to-update-the-model-in-controller-to-avoid-validation –

+1

Darinの回答に加えて、これはMVC4とまったく同じですと剃刀。 – Bern

+4

これは私をとても助けました、ありがとう!この質問を閉じた人に:この質問が何か価値があるかどうかを判断する前に、ここで何が尋ねられているのかを知る必要があります! – Kizz

関連する問題