我有一个包含产品和类别SelectList的viewmodel。
public class AdFormViewModel
{
public AmericanAds.Model.Ad Ad { get; set; }
public SelectList Categories { get; set; }
public AdFormViewModel(AmericanAds.Model.Ad ad, SelectList categories)
{
Ad = ad;
Categories = categories;
}
}
添加新产品时,如果类别下拉列表的验证失败,我会收到以下错误消息。
传递到字典中的模型项的类型为“AmericanAds.Model.Ad”,但此字典需要“AmericanAds.Controllers.AdFormViewModel”类型的模型项。
以下是创建操作的控制器。
public ActionResult Create()
{
AdFormViewModel data = new AdFormViewModel(
null,
new SelectList(_repository.CategoryList().ToList(), "CategoryId", "CategoryName")
);
return View(data);
}
//
// POST: /Ad/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Ad ad)
{
if (ModelState.IsValid)
{
try
{
_repository.AddAd(ad);
return RedirectToAction("Index");
}
catch
{
return View(ad);
}
}
else
{
return View(ad);
}
}
我错过了什么?
正如您所知,我是ASP.Net MVC的新手。
谢谢!
答案 0 :(得分:0)
这是因为您的Create
视图需要AdFormViewModel
类型的模型,但在Create
操作(具有[AcceptVerbs(HttpVerbs.Post)]
属性的操作)中,您返回的是Ad
类型的模型{1}}(请参阅return View(ad)
所示的行。)
就像异常消息所说的那样;它需要AmericanAds.Controllers.AdFormViewModel
,但您要发送AmericanAds.Model.Ad
。
不,我不认为这与验证有任何关系。