2012-06-11 22 views
5

MVC 3プロジェクトで私のビューに奇妙な問題があります。私は(テンプレートを使用して作成された)データ編集のための標準的なビューを持っています。フォームを送信すると、Nameプロパティが変更されますが、コントローラからブラウザに戻った後も、私はまだloremの値を参照しています。どうして ?MVC 3モデルのサブミット後にビューがリフレッシュされない

あなたがポスト/取得にそれを変更したい場合は ModelStateから値を削除する必要が
@using (Html.BeginForm()) 
    { 
     @Html.EditorFor(model => model.Name) 
     <input type="submit" value="Save" /> 
    } 


    public ViewResult EditUserData(int id) 
    { 
     [...] 
     UserData model = new UserData(); 
     model.Name = "lorem";    

     return View("~/Views/UserDetails.cshtml", model); 
    } 

    [HttpPost] 
    public ViewResult EditUserData(UserData model) 
    { 
     model.Name = "ipsum"; 
     return View("~/Views/UserDetails.cshtml", model);  
    } 

public class ControlUserData 
{ 
    [...] 

    [Required] 
    [Display(ResourceType = typeof(Resources), Name = "UserNameFirst")] 
    public string Name { get; set; } 
} 
+0

をリフレッシュするためのポストアクションがヒットしているのですか?ビジュアルスタジオブレークポイント? – Shyju

+0

@Shyjuはい、送信ボタン – Tony

+0

なぜView(〜/ Views/UserDetails.cshtml "、Model)'を共有ディレクトリに置くのではなく、 'View(" UserDetails "、モデル)'? –

答えて

7

[HttpPost] 
public ViewResult EditUserData(UserData model) 
{ 
    ModelState.Remove("Name"); 
    model.Name = "ipsum"; 
    return View("~/Views/UserDetails.cshtml", model);  
} 

これはMVCのbehavoirに構築されています。すべてのHtml.Helpersは内の値を好みます実際のモデル値に対するModelStateコレクション

ここに良い記事があります:ASP.NET MVC Postbacks and HtmlHelper Controls ignoring Model Changes

+0

あなたは正しいと思います。ヒントをありがとう! – Tony

3

これは仕様です。 MVCは、ポストアクションの処理時にユーザが最初に提出した内容を表示したいと仮定しています。 this related stack overflow postを参照してください。

0

ほんの少しの編集...全体モデル

[HttpPost] 
public ViewResult EditUserData(UserData model) 
{ 
    UserData newmodel = new UserData(); 
    ModelState.Clear(); 
    model = newmodel; 
    return View("~/Views/UserDetails.cshtml", model);  
} 
関連する問題