2011-07-26 6 views
1

MVC3 응용 프로그램에서 사용자 정의 컨트롤을 만들고 있습니다. 내보기 모델은 다음과 같습니다 나는 [DataType] 속성을 사용할 수 있도록ASP.NET MVC3 Html.Editor 객체의 속성 및 속성

public class MyViewModel 
{ 
    public object Value { get; set; } 
} 

Value 속성은 INT, 문자열 또는 부울을 수 있습니다. 내가보기 모델을 만들 때

는 :

var viewModel = new MyViewModel { Value = "" }; 

또는

var viewModel = new MyViewModel { Value = 1 }; 

는이 코드 가정 :

<%: Html.EditorFor(p => p.Value) %> 

유형의 텍스트 상자의 HTML 입력을 렌더링합니다. 불행하게도 아무 것도 렌더링되지 않습니다.

bool 값 또는 일부 비어있는 문자열을 사용하면 모든 것이 잘 작동합니다. 나는 몇 가지 조사를했다

Value property of type bool

,하지만 지금 나는 해결책을 발견하지 않았다 :

var viewModel = new MyViewModel { Value = true }; 

Html.EditorFor은 체크 박스의 입력을 렌더링 : 다음은 그 예입니다.

답변

1

내가 사용

<%: Html.EditorFor(p => p.Value) %> 

모든 것이 잘 작동합니다! 빈 문자열 또는 int 값에 대해 텍스트 상자가 렌더링됩니다. 표현 p => p.Value의 문제점은 무엇입니까?

1

아니 직접적인 대답,하지만 당신은 당신의 ViewModel 제네릭 할 수 있습니다 :

public class MyViewModel<T> 
{ 
    public T Value { get; set; } 
} 

이 방법은, HTML 헬퍼 방법을 해결할 수 있습니다 유형 값이 무엇인지 정확히 컴파일시에, 정확히 편집기 세우다.

<%: Html.Editor("Value") %> 

대신 :

+1

이것은 단순화 된 예입니다. 실제 앱에서는 제네릭 유형이 있습니다. 하지만 MyViewModel 목록을 만들 수 있어야합니다. 아시겠지만 제네릭 형식의 목록을 만들 수 없으므로 object 유형의 Value라는 속성을 사용하여 인터페이스 (IMyViewModel)를 만들었습니다. – krolik