2010-04-04 4 views
4

ASP.NET MVC2에서 새로운 EditorFor 구문을 사용하여 복잡한 객체를 게시하려고합니다.Html.DropDownListFor ASP.NET MVC2의 복잡한 객체

FraudCategory 하위 개체가있는 FraudDto 개체가 있는데이 개체를 양식에서 게시 된 값으로 설정하고 싶습니다.

간단한 개체를 게시하는 것은 문제가 아니지만 복잡한 개체를 자식 개체로 처리하는 방법에 어려움을 겪고 있습니다.

내가 양식에 바인딩하고 whcih 다음 부모 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); 
} 

, 사기 개체의 FraudCategory 속성이 null입니다.

이 복잡한 개체를 연결하는 데 필요한 추가 단계가 있습니까?

답변

1

드롭 다운 목록은 단일 값을 반환하므로이 경우 값 문자열을 복합 개체와 동일하게 설정하려고합니다. 문자열에서 객체로의 암시 적 변환이 없다면, 당신이하려는 것은 아마 작동하지 않을 것입니다.

이 문제를 해결하는 방법에 대한 제안은 FraudCategoryDto 개체를 저장하는 방법이 무엇인지 또는 해당 정보를 어떻게 사용하고 있는지에 따라 결정될 것입니다.

+0

이 작동 : <% = Html.DropDownListFor (X => x.FraudCategory.Id, Model.FraudCategoryList, 새로운 {스타일 = "너비 : 200 픽셀"}) %> 나는의 값을 설정하고 자식 개체. 일반적으로 모든 예제는 단순한 개체로만 작업합니다. – dagda1

+0

아, 그 해결책에 대한 전화, 내 마음을 완전히 건너 뜁니다. 저장소를 사용하려고 제안했습니다. 그것은 비록 카테고리 이름 필드를로드하지 않는 것 같습니다. –

관련 문제