Проверка модели с помощью ViewModel не работает - PullRequest
1 голос
/ 09 декабря 2010

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

[MetadataType(typeof(EvaluationValidation))]
public partial class Evaluation
{
    public class EvaluationValidation
    {
        [DisplayName("Title of evaluation")]
        [Required( ErrorMessage="Please give a title")]
        public string Title { get; set; }
    }
}

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

Элемент модели, передаваемый в словарь, имеет тип 'FOOBAR.Models.Evaluation', но для этого словаря требуется элемент модели типа 'FOOBAR.Areas.Evaluation.ViewModels.EvaluationFormViewModel'.

Это код, используемый в моем контроллере

    [HttpPost]
    public ActionResult Create(FormCollection formValues)
    {
        Models.Evaluation data = new Models.Evaluation();
        if (TryUpdateModel(data, "evaluations"))
        {
            this.daoe.Create(data);
            return RedirectToAction("Index");
        }
        return View(data);
    }

А это мой viewModel

public class EvaluationFormViewModel
{
    public FOOBAR.Models.Evaluation evaluations;
    public SelectList selectlist_evaluationtypes { get; set; }
    public SelectList selectlist_evaluationstatus { get; set; }
}

У вас есть идея?Спасибо заранее

1 Ответ

1 голос
/ 09 декабря 2010

Вы передаете экземпляр Models.Evaluation вашему представлению, которое привязано к модели другого типа.

Models.Evaluation data = new Models.Evaluation();
if (TryUpdateModel(data, "evaluations"))
{
   // ...
}
return View(data);

Если TryUpdateModel возвращает false (что происходит, например, когда форма не проходит проверку), вы фактически передаете data в представление типа Models.Evaluation.

Попробуйте сопоставить его с типом FOOBAR.Areas.Evaluation.ViewModels.EvaluationFormViewModel перед передачей его в представление.

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