2009-03-22 2 views
4

열거 형에 강력하게 형식화 된 재사용 가능한 ASP.NET MVC ViewUserControl을 만들고 싶습니다.int 또는 enum 유형의 강력한 형식의 ASP.NET MVC ViewUserControl을 만들 수 있습니까?

이 작업을 수행 할 수 있습니까? 내가 그것을 시도 할 때, ViewUserControl는 받아 들일 수 강한 타입 만이 또한 내가의 tModel로 int를 통과 할 수 없음을 의미

참조 형식 :(이 될 수 있다고 말한다.

왜 내가 원하는 않습니다 여러 사이트에서 해당 논리를 복사하는 대신 ViewUserControl을 다시 작성하여 열거 형을 전달하고자합니다. 예를 들어, 열거 형에 의존하는 간단한 이미지를 표시하고 있습니다.

예.

public enum AnimalType 
{ 
    Cat, 
    Dog 
} 

// .. now code inside the view user control ... 
switch (animalType) 
{ 
    case AnimalType.Cat: source = "cat.png"; text="cute pussy"; break; 
    ... etc ... 
} 

<img src="<%=Url.Content("~/Images/" + source)%>" alt="<%=text%>" /> 

내가 번지 해요 솔루션을 essin 것은 .. 다음을 수행 한 후 (의 tModel 유형은 유형 클래스 될 수 있기 때문에) 강력한 형식의 ViewUserControl을 만들고 NOT하는 것

<% Html.RenderPartial("AnimalFileImageControl", animalType); %> 

과 ViewUserControl에서

...

AnimalType animalType = (AnimalType) ViewData.Model; 
    switch (animalType) 
    { ... etc ... } 

public sealed class Box<T> where T : struct { 
    public Box(T value) { Value = value; } 
    public T Value { get; private set; } 
    public static explicit operator T(Box<T> item) { 
     return item.Value; } // also check for null and throw an error... 
    public static implicit operator Box<T>(T value) { 
     return new Box<T>(value); } 
} 

및를 사용

환호 :) 잘

답변

1

, 당신은 할 수 있습니다, Box<MyEnum> 등 -하지만 개인적으로 유형이없는보기를 사용하고 단순히 캐스팅하는 것이 더 쉬울 것으로 기대합니다.

+0

re : untyped보기 - 동일. 그게 내가 함께 갈거야. 구조체를 만드는 것을 잊어 버렸습니다 : P 좋은 생각, 강하게 입력하고 싶다면. 다시 한 번 감사드립니다. Marc :) –

관련 문제