Свойство ViewModel, которое нельзя устанавливать на стороне клиента (ASP.NET MVC) - PullRequest
0 голосов
/ 13 марта 2012

У меня есть контроллер-действие со сложным объектом для входного параметра, который отправляется почтой.В сценарии я бы не хотел, чтобы пользователь отправлял что-то действительное (например, он нажал кнопку «Назад»), но я все еще хочу сохранить состояние формы, поэтому я помещаю это в сеанс.

Тамэто свойство на виртуальной машине, которое называется 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);
}

1 Ответ

0 голосов
/ 13 марта 2012

Вы можете использовать BindAttribute для управления свойствами, используемыми при привязке модели.

[Bind(Exclude="Valid")]
public class MyVm
{
    public bool Valid {get; set;}
}
...