【发布时间】:2010-03-04 14:36:29
【问题描述】:
我有一个包含产品和 SelectList 类别的视图模型。
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 非常陌生。
谢谢!
【问题讨论】:
-
这是 asp.net-mvc 2 吗?否则,您正在运行哪个验证引擎?你能告诉我们一些视图标记和失败的操作吗?
-
它是 mvc 1.0。我将在帖子中添加一些代码
-
出于好奇,在这种情况下,下拉菜单的验证怎么会失败?它有时会工作有时会失败吗?如果是这样,每次的输入是什么?它总是失败吗?如果是在哪一行?
-
在视图中,下拉列表定义为 所以如果用户没有选择一个值并将其保留为“请选择”则验证失败。随着 Cagdas 的发现,问题与验证无关,当模型状态无效时,我没有返回 ViewModel 对象。
标签: asp.net-mvc validation viewmodel