2012-07-19 2 views
7

이 코드는 작동하는 MVC보기에 포함되어 있지만이 간단한 것을 달성하기 위해 많은 코드가 이어집니다. 더 효율적인 방법이 있습니까?Viewbag 속성이 비어 있는지 확인하고보기에서 기본값 사용

@if (string.IsNullOrEmpty(ViewBag.Name)) 
{ 
@:   
} 
else 
{ 
@:ViewBag.Name 
} 
+1

내 대답은 한 가지 경고를해야합니다. ViewBag.Name이 ""이면  이 아닌 ""로 출력됩니다. 그것은 때문에 ?? 연산자는 빈 문자열이 아닌 null에서만 작동합니다. – VJAI

답변

17
@(ViewBag.Name ?? Html.Raw(" ")) 
5

은 어떤 방법이 더 효율적으로 만들려면? 당신의 강력한 형식의보기에서 다음

public string FormattedName 
{ 
    get { return string.IsNullOrEmpty(this.Name) ? " " : this.Name; } 
} 

과 :

@Html.DisplayFor(x => x.FormattedName) 

또는 당신이 선호하는 경우 :

확인 네, 사용 뷰 모델과는 ViewBag 제거

@Model.FormattedName 

또 다른 가능성은 맞춤 도움말을 작성하는 것입니다. 어 :

public static class HtmlExtensions 
{ 
    public static IHtmlString Format(this HtmlHelper html, string data) 
    { 
     if (string.IsNullOrEmpty(data)) 
     { 
      return new HtmlString(" "); 
     } 

     return html.Encode(name); 
    } 
} 

다음보기 :

@Html.Format(Model.Name) 

하거나 ViewCrap을 유지해야하는 경우가 캐스팅과 함께 생활해야합니다 (죄송합니다, .NET은 확장 메서드 파견을 지원하지 않습니다) 동적 매개 변수 :

@Html.Format((string)ViewBag.Name) 
+1

"동적"은 일반적으로 남용이라고 생각합니다. –

관련 문제