我正在研究ASP.NET MVC2并尝试使用新的EditorFor语法发布复杂对象。
我有一个FraudDto对象,它有一个FraudCategory子对象,我想从表单中发布的值设置这个对象。
发布一个简单的对象不是问题,但我正在努力解决如何使用子对象处理复杂对象。
我在表单上绑定了以下父FraudDto对象:
public class FraudDto
{
public FraudCategoryDto FraudCategory { get; set; }
public List<FraudCategoryDto> FraudCategories { get; private set; }
public IEnumerable<SelectListItem> FraudCategoryList
{
get
{
return FraudCategories.Select(t => new SelectListItem
{
Text = t.Name,
Value = t.Id.ToString()
});
}
子FraudCategoryDto对象如下所示:
public class FraudCategoryDto
{
public int Id { get; set; }
public string Name { get; set; }
}
在表单上,我有以下代码,我想将FraudCategoryDto绑定到下拉列表。该视图的类型为ViewPage:
<td class="tac">
<strong>Category:</strong>
</td>
<td>
<%= Html.DropDownListFor(x => x.FraudCategory, Model.FraudTypeList)%>
</td>
然后我有以下控制器代码:
[HttpPost]
public virtual ViewResult SaveOrUpdate(FraudDto fraudDto)
{
return View(fraudDto);
}
当表单发布到服务器时,Fraud对象的FraudCategory属性为null。
我需要连接这个复杂对象的其他步骤吗?
答案 0 :(得分:1)
下拉列表返回单个值,因此在这种情况下,它会尝试将值字符串设置为等于复杂对象。除非您有从字符串到对象的隐式转换,否则您尝试执行的操作可能无效。
我对如何解决此问题的任何建议都将基于您存储FraudCategoryDto
对象的方法,或者您如何使用该信息。