динамическая модель и ModelState - PullRequest
0 голосов
/ 26 марта 2011

У меня есть подобное действие:

Update([Bind(Prefix = "CurrentModel")] dynamic edited)

но когда я использую динамический, ModelState.IsValid всегда возвращает истину, поэтому кажется, что для динамического объекта нет проверки? Если нет, то как я могу решить эту проблему?

1 Ответ

2 голосов
/ 26 марта 2011

Существует два случая:

  1. В качестве аргументов действия используются модели представлений, в этом случае средство связывания моделей по умолчанию автоматически назначает свойства и устанавливает возможные ошибки для состояния модели:

    public ActionResult Update([Bind(Prefix = "CurrentModel")] EditViewModel edited)
    {
        if (ModelState.IsValid)
        {
    
        }
        ...
    }
    
  2. Вы используете некоторую слабую типизацию либо с dynamic, либо с FormCollection, и в этом случае средство связывания модели по умолчанию не срабатывает и не выполняет никакой проверки, так какон не способен вывести ваш реальный тип модели.В этом случае вам нужно вручную вызвать TryUpdateModel и указать тип вашей модели:

    public ActionResult Update(dynamic edited)
    {
        var model = new MyViewModel();
        if (!TryUpdateModel(model, "CurrentModel"))
        {
            // The model was not valid
        }
        ...
    }
    

Вывод: использование dynamic в качестве аргумента действия в действии контроллера имеет мало смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...