2016-10-16 2 views
1

asp.net MVC 5에서 작업 중입니다. 부울 용 헬퍼를 만들었습니다. 도우미가 html을 문자열 asp.net MVC 5로 표시합니다.

나는이 쓴 :

public class CustomHelper 
    { 
     public static string Boolean(bool? value) 
     { 
      if(value == true) 
       return string.Format("<span class='glyphicon glyphicon-ok green'></span>"); 
      else 
       return string.Format("<span class='glyphicon glyphicon-remove red'></span>"); 
     } 
    } 

을하고 면도기는 다음과 같습니다

<td> 
    @CustomHelper.Boolean(item.Deleted) 
</td> 

하지만 결과는 사진과 동일합니다. html은 문자열로 표시됩니다. enter image description here

어떻게 고칠 수 있습니까? 대신 상징을 보여줄 수 있습니까? 감사합니다.

+0

약간의 설명을 듣고 이해하지 못했습니다. –

+0

string.format 대신 MvcHtmlString.Create 사용 –

+0

그리고 도우미가 MVC 도우미에 대한 확장은 메서드가있는 클래스 일뿐입니다. asp.net 사이트 –

답변

1

기본적으로 @ 기호는 출력을 인코딩합니다. 당신은 아래와 같이 HtmlHelper 클래스에 확장 방법으로 사용자 정의 검사를 만들어야합니다

public static class BooleanExtensions 
     { 
       public static MvcHtmlString Boolean(this HtmlHelper helper, bool value) 
       { 
        var spanTag = new TagBuilder("span"); 
        if(value) 
        spanTag.MergeAttribute("class", glyphicon glyphicon-ok green"); 
        else 
        spanTag.MergeAttribute("class", glyphicon glyphicon-remove red"); 

        return MvcHtmlString.Create(spanTag.ToString(TagRenderMode.EndTag));   

       } 
     } 

다음, 당신의 면도기보기에,로 전화 :

@Html.Boolean(item.Deleted) 

이를 추가하는 것을 잊지 마세요 @ 보기의 시작 부분에 클래스가있는 네임 스페이스에 사용하기

관련 문제