I가 실행하는 영문 파일 일부 인라인 코드 가지고NullReferenceException이
<dd><%= encode(Listing.Address.Line1) %> </dd>
문제가 특정 상황에서 리스팅 객체 속성 예에 따라서 참조 널이 될 것이다을 Address는 예외를 throw합니다. 이 예외는 어떻게 처리합니까? 나는 기본적으로 그것을 무시하고 싶다. 잡아라. 그러면 페이지의 규칙적인 실행/렌더링을 진행한다.
I가 실행하는 영문 파일 일부 인라인 코드 가지고NullReferenceException이
<dd><%= encode(Listing.Address.Line1) %> </dd>
문제가 특정 상황에서 리스팅 객체 속성 예에 따라서 참조 널이 될 것이다을 Address는 예외를 throw합니다. 이 예외는 어떻게 처리합니까? 나는 기본적으로 그것을 무시하고 싶다. 잡아라. 그러면 페이지의 규칙적인 실행/렌더링을 진행한다.
null 검사를 수행하십시오. 거의 항상 예외를 처리하는 것보다 발생할 수있는 예외 상황을 테스트하는 것이 좋습니다. 런타임은 처음에 예외를 테스트하고 그에 따라 처리하는 것보다 예외를 던지고 처리하는 데 더 많은 작업을해야합니다.
<%= encode(Listing != null && Listing.Address != null ? Listing.Address.Line1 : string.Empty) %>
주소를 반드시 확인하십시오. 누전은 귀하의 친구입니다. 주문은 & &에 있습니다.
넓은 그림을 보지 않고도 사용자의 뷰 모델에 자동으로이를 수행하는 방법이 있음을 제안합니다. 이런 종류의 물건은 당신이 그것을 가지고 있다면보기에보기 흉하게됩니다.
: 당신이 뭔가를 입력 할 수 있습니다 모든 IT 기본 속성이 null이 아닌, 따라서 상당히 Listing
가 null이 아닌 경우 간단하고, 수 문제를 가정
사용이
<%= if(Listing.Address.Line1 != null)
{
encode(Listing.Address.Line1)
}
%>
리스트가 null 인 경우 이것은 똑같은 예외를 발생시킵니다. 이 작업을 수행하기 전에 Listing의 존재 여부를 테스트하지 않습니다. –
또한'if' 문은 값을 반환하지 않으므로'<%= %>'태그에는 사용할 수 없습니다. – StriplingWarrior
(((새 목록 (AddressObj))). Address.Line1 ?? 목록) = 인코딩 <%는 %가>
당신 같은 그 Address.Line1
항상 값을가집니다 생성자와 여기에 Listing
클래스를 작성할 수 있습니다.
이제는 문제가 상당히 복잡한 경우 Listing
개체에 유효한 인스턴스가 있지만 그 기본 특성이 없을 수 있습니다. 가장 좋은 방법은 encode 메서드를 다른 메서드 나 속성에 포함하여 예상 된 결과를 반환하는 것입니다. 그것을 마크 업에서 호출하십시오. 마크 업에서
public string EncodedAddress
{
get
{
if (Listing == null)
return string.Empty;
if (Listing.Address == null)
return string.Empty;
return encode(Listing.Address.Line1);
}
}
당신은 같은 것을 할 :
<%= EncodedAddress %>
아차는, 당신을 보지 못했어요을 거의 똑같은 일을 기록했다. +1. –