2011-10-27 2 views
1

여러 데이터 유형에 적용되는 편집기 템플릿이 있습니다. 대부분은 TextBoxFor에 의해 표시되지만, CheckBoxFor를 부울에 사용하고 싶습니다 (nullable이 아님). 그것은 지금처럼 :편집기 템플릿에서 CheckBoxFor와 TextBoxFor 중 하나 선택하기

if (data.DataTypeName == "Boolean") 
{ 
    @Html.CheckBoxFor(m => m, new { @class = classData }) 
} 
else 
{ 
    @Html.TextBoxFor(m => m, new { @class = classData }) 
} 

나는 CheckBoxFor 람다에서 오류가 발생합니다 : 암시 적으로 '부울'에 유형 '개체'변환 할 수 없습니다. 명시 적 변환이 존재합니다 (캐스트가 누락 되었습니까?). 캐스트를 시도하면 다음과 같은 예외가 발생합니다. ASP.net MVC CheckBoxFor casting error. 그러나이 일반화 된 솔루션에서 모델 멤버를 사용할 수 없기 때문에이 솔루션을 사용할 수 없습니다. 나는 꿈을 포기해야만 할까?

답변

2

속성이 객체 유형이므로 런타임에 해당 유형의 편집기를 결정해야합니까? 그럴 경우 * For 메서드를 사용하지 않고 명시 적으로 값을 캐스팅하고 전달하십시오.

if (data.DataTypeName == "Boolean") 
{ 
    @Html.CheckBox("", (bool)Model, new { @class = classData }) 
} 
else 
{ 
    @Html.TextBox("", (string)Model, new { @class = classData }) 
} 
+0

놀랍도록 쉬운 방법입니다. 감사 – Oniel

관련 문제