2012-03-13 62 views
0

我有一个控制器操作,其中包含由Post发送的输入参数的复杂对象。 在一个场景中,我不希望用户提交一些有效的信息(例如他按下了一个后退按钮),但我仍然想要保留表单的状态,所以我将它放在Session中。不应在客户端设置的ViewModel属性(ASP.NET MVC)

VM上有一个名为Valid的属性,用于标记模型状态验证的结果供以后使用。

我不希望用户以某种方式从客户端发送此属性(例如将其设置为假肯定状态可能会混淆我的代码,如果我不小心)。

是否有一个属性,就像这里使用的不可序列化一样? (所以我不必在我的代码中明确地将它设置为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;} 
}