2011-03-30 3 views
2

가정하자 나는이 다음ASP.NET MVC는 : 세부 사항보기에서 빈 필드를 제거

작업 : 이것은 내이다

public ActionResult Details(int id) 
{ 
    Person person = personRepository.GetPerson(id); 

    return View(person) 
} 

가 :

Name: <%= Html.Encode(Model.Name) %><br /> 
    Age: <%= Html.Encode(Model.Age) %><br /> 
    Birth Date: <%= Html.Encode(Model.Birthday) %><br /> 
    Country: <%= Html.Encode(Model.Country) %><br /> 
    Weight: <%= Html.Encode(Model.Weight) %><br /> 
    Height: <%= Html.Encode(Model.Height) %><br /> 
    Phone: <%= Html.Encode(Model.PhoneNumber) %> 

내 문제

그 나라 , 가중치 W 높이가 널 (NULL) 입력 가능합니다. 나는이

foreach (var field in Model) 
     if (var field != null) 
     { 
      field.name + ": " + field.value 
     } 

같은 것을 할 수있는 방법은 다음과 같이 그것을 할 수 있습니다하지만 난 더 나은 방법이 확신 :

if (Model.Name != null){ 
      <%= Html.Encode(Model.Name)%> 
     } 

미리

+0

내 솔루션을 이 문제는 내 데이터베이스의 nullable 필드가 null이 아니고 대신 빈 문자열을 포함하도록 보장하는 것이 었습니다. 나는 이것이 모든 종류의 규칙을 어기는 것을 확신한다. 희망을 갖고 여기에서 좋은 대답을 얻을 수 있습니다. – Pete

+2

엔티티가 변경되지 않도록 Nullable 국가, 무게 및보기 모델의 높이를 지정합니다. 또한 Html.EditorFor 및 Html.LabelFor 도우미 메서드 사용을 고려할 것입니다. – WorldIsRound

+0

@WorldsIsRound 덕분에 도우미 메서드와 함께 간계를 할 것 같다 –

답변

2
Country:<%: string.IsNullOrEmpty(Model.Country) ? String.Empty : Model.Country %>     
<br /> 

노트에 감사가 그 : < % : %> MVC 2에서 사용할 수 있습니다 .Encode

+0

공정하게, 나는 그것을 받아 들일 것이다 –

+0

+1 이제 어쨌든 Http.EditorFor 또는 Http.TextFor 등을 사용할 때 자동으로 일어날 수 있습니까? – Pete

+0

@Pete 내장되어 있지 않으면 자신의 확장 방법을 사용하여이를 감싸고 null을 확인할 수 있습니다. – Ryan