我有一个带有输入参数的复杂对象的控制器动作,由Post发送。 在一个场景中,我不希望用户提交有效的内容(例如,他按下后退按钮),但我仍然希望保持表单的状态,所以我把它放在Session中。
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 :(得分:0)
您可以使用BindAttribute来控制模型绑定时使用的属性。
[Bind(Exclude="Valid")]
public class MyVm
{
public bool Valid {get; set;}
}