Html.DropDownListFor<> and complex object in ASP.NET MVC2
- by dagda1
Hi,
I am looking at ASP.NET MVC2 and trying to post a complex object using the new EditorFor syntax.
I have a FraudDto object that has a FraudCategory child object and I want to set this object from the values that are posted from the form.
Posting a simple object is not a problem but I am struggling with how to handle complex objects with child objects.
I have the following parent FraudDto object whcih I am binding to on the form:
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()
            }); 
        }
The child FraudCategoryDto object looks like this:
public class FraudCategoryDto
{
    public int Id { get; set; }
    public string Name { get; set; }
}
On the form, I have the following code where I want to bind the FraudCategoryDto to the dropdown.  The view is of type ViewPage:
<td class="tac">
    <strong>Category:</strong>
</td>
<td>
    <%= Html.DropDownListFor(x => x.FraudCategory, Model.FraudTypeList)%>
</td>
I then have the following controller code:
[HttpPost] 
public virtual ViewResult SaveOrUpdate(FraudDto fraudDto)
{
    return View(fraudDto);
}
When the form is posted to the server, the FraudCategory property of the Fraud object is null.
Are there any additional steps I need to hook up this complex object?
Cheers
Paul