2013-11-20 2 views
1

나는 내 asp.net MVC 웹 응용 프로그램 내에서 다음보기가 : -가장 좋은 방법

 @model IEnumerable<TMS.Models.TMSVirtualMachine> 
     <td> 
@(item.TechnologyBackUpStatu == null ? "None" : item.TechnologyBackUpStatu.Name)   

@Html.DisplayFor(model=>item.TechnologyBackUpStatu.Name) 
     </td> 

TechnologyBackUpStatus는, null 허용 탐색 속성입니다 모델을 의미 TechnologyBackUpStatus이 없으므로 현재는 item.TechnologyBackUpStatu.Name)을 표시하는 두 가지 방법을 사용하고 있습니다. 그러나 apprach 내가 고려해야하는 이유; DisplayFor을 사용하거나 ? :을 사용하고 왜 onr apprach가 다른 것과 비교하면 더 좋은가요? 예를 들어 목적을 포맷에 대해 DisplayFor이 DataAnnotation 사용을 할 수 있습니다 사용

감사

+0

당신이 다음의 널 (NULL) 경우 기술을 사용하여 백업을 유지합니다. null 및 항목을 확인하는 값입니다. 기술 백 업 상태입니다. 값에 액세스하려면 값을 사용하십시오. –

답변

1

. 그것은 원시 @item.TechnologyBackUpStatu.Name보다 그것을 사용하는 것이 좋습니다.

탐색 속성은 복합 형식이기 때문에이 같은 당신의 엔티티를 표시하는 방법을 선택하는 경우, 당신은 DisplayTemplate을 구축 할 수 있습니다 :

귀하의 템플릿 : Shared/DisplayTemplates/TechnologyBackUpStatu.cshtml

@model MyNamespace.TechnologyBackUpStatu 

@if(Model != null) 
{ 
    @Html.DisplayFor(model => model.Name) 
} 

그런 다음 주에 보기 :

0

가장 간단한 방법은 다른 속성을 만드는 것입니다. 그것은 가치가있다.

다음은 지연로드를 활성화하고 DbContext 클래스의 속성을 무시해야하는 예입니다. 보기에

public class TMSVirtualMachine 
{ 
    public int? TechnologyBackUpStatuId { get; set; } 

    public string TechnologyBackUpStatuName 
    { 
     get 
     { 
      return TechnologyBackUpStatuId.HasValue ? 
         TechnologyBackUpStatu.Name : "None"; 
     } 
    } 
    public virtual TechnologyBackUpStatu TechnologyBackUpStatu { get; set; } 
} 

: 모델의

당신의 DbContext 클래스에서

@Html.DisplayFor(model=>item.TechnologyBackUpStatuName) 

public class YourDbContext : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<TMSVirtualMachine>().Ignore(n => n.TechnologyBackUpStatuName); 
    } 
}