2012-03-13 13 views
0

私はポストによって送信される入力パラメータ用の複雑なオブジェクトを持つコントローラアクションを持っています。 シナリオでは、ユーザーが有効なもの(例えば、戻るボタンを押したなど)を送信したくないのですが、フォームの状態を保持したいので、セッションに入れます。クライアント側で設定すべきでないViewModelプロパティ(ASP.NET MVC)

VMには、後で使用するためのモデルステート検証の結果をマークするためのプロパティがあります。

私は、何らかの理由でclientsideからこのプロパティを送信したくないです(たとえば、偽陽性状態に設定すると注意しないとコードが混乱する可能性があります)。

ここでは、非直列化可能な属性がありますか? (だから私は明示的に私のコードでそれをfalseに設定する必要はありません)。私のコードの

パート(そのほとんどがリッピングされた)

[HttpPost] 
public ActionResult FormWithDelayedValidation(MyVM vm) 
{ 
    SessionVariables.Current.OrderSecondVM = vm; 

    if (ModelState.IsValid) 
    { 
     vm.Valid = true; 
     return Redirect(somewhere); 
    } 

    if (vm != null) vm.Valid = false; 
    return Redirect(somewhere_else); 
} 

答えて

0

あなたがモデルバインドするときに使用するプロパティを制御するためにBindAttributeを使用することができます。

[Bind(Exclude="Valid")] 
public class MyVm 
{ 
    public bool Valid {get; set;} 
} 
関連する問題