asp.net mvc:绑定复杂对象

时间:2010-08-27 10:11:19

标签: asp.net-mvc data-binding

  1. 考虑经典例子:产品 和类别
  2. 编辑产品
  3. 在下拉列表ID中 选中 - 类别映射 作为所有字段为空的对象 除了Id
  4. 提交产品编辑表格时 - 验证给出错误:“类别 名称是必需的“(我已经要求了 类别名称属性的属性)
  5. 如果我想使用内置验证(if (!ModelState.IsValid)),如何处理此类错误? 我想到编写自定义数据绑定器,它将用数据库中的值填充所有这些id-only-objects。

    你有没有解决这个问题的其他方法?

1 个答案:

答案 0 :(得分:1)

您需要传回已修改的产品和类别ID。然后在您的控制器/存储库中从传递的类别ID中获取类别,并将类别设置为产品类别。

当从db(或任何地方)返回类别时,应该推荐所有属性,这样你就不应该得到“需要类别名称”

我的意思的一个简单例子:

[HTTPost]
public ActionResult Save(Product product, int? categoryId)
{
  Category category = GetCategory(categoryID);

  product.Category = category;

  if (ModelState.IsValid)
  {
    // Save etc.
  }
}