我使用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; }
}
}
Displayname绑定查看没有问题但是当我尝试提交视图时,我收到此错误:
模型项传入 字典是类型 '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; }
}
你有个主意吗? 感谢提前
答案 0 :(得分:1)
您正在将Models.Evaluation
实例传递给您的视图,该视图绑定到另一种类型的模型。
Models.Evaluation data = new Models.Evaluation();
if (TryUpdateModel(data, "evaluations"))
{
// ...
}
return View(data);
如果TryUpdateModel
返回false
(例如,当表单未通过验证时会发生这种情况),您实际上是将data
传递给View {{1} }}
尝试将其映射到Models.Evaluation
类型,然后再将其传递给视图。