我将ASP.NET MVC 2用于我的项目。
我正在尝试使用下一代码编辑我的产品信息:
[HttpGet]
public ActionResult Edit(int id)
{
IProduct product = productService.getProductById(id);
return View(product);
}
IProduct和其他IEntities使用IoC Castle Windsor进行实例化。已成功加载编辑页面。在我的页面顶部,我声明该页面必须是Inherits =“System.Web.Mvc.ViewPage
[HttpPost]
public ActionResult Edit(IProduct product)
{
//Whatever i did here i always get the error prevents my any actions
}
然后我收到错误'无法创建接口的实例。'
有人可以澄清为什么吗? 对不起,可能是英语不好,谢谢你的回答。
答案 0 :(得分:5)
这是因为MVC需要知道要为您的产品参数构造的具体类型。
您无法实例化IProduct,只能实现IProduct的具体类型。使这项工作最简单的方法是使用简单的具体DTO类型从视图传输数据(有时称为ViewModel)。
如果为类型实现自定义模型绑定器,则可以使示例使用接口类型。 (基本上是一种告诉MVC遇到IProduct时要实例化的类型的方法)。