首先,请容忍我在这里。我有一个自定义模型绑定器,它成功地将表单数据映射到自定义对象。在此模型绑定器中,它还将表单项映射到不同的自定义对象。我觉得我应该能够做的是创建一个单独的模型绑定器来处理第二个映射。这是一个简化版本。
自定义对象:
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string Status { get; set; }
public string Description { get; set; }
public IEnumerable<SubCategory> SubCategories { get; set; }
}
public class SubCategory
{
public int CategoryId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Status { get; set; }
}
如果我的表单为 SubCategories 传回了一堆 Id,我需要做的是运行到数据存储库并水合 SubCategory 对象。从表格中,将按以下格式提交子类别列表:
<input type="text" name="Name" value="This Category" />
<input type="hidden" name="subcat.Index" value="0" />
<select name="subcat[0].Id">
<option value="1">Something</option>
<option value="2">Something else</option>
</select>
<input type="hidden" name="subcat.Index" value="1" />
<select name="subcat[1].Id">
<option value="1">Something</option>
<option value="2">Something else</option>
</select>
<input type="hidden" name="subcat.Index" value="2" />
<select name="subcat[2].Id">
<option value="1">Something</option>
<option value="2">Something else</option>
</select>
编写自定义来映射类别显然很简单,但编写模型绑定器将依次映射子类别(在模型绑定器中,我会运行查询我的数据存储库)证明有点困难。
我不确定我说得有多清楚,抱歉,感谢您的阅读,如果有什么我可以说的让我更清楚,请告诉我!