2015-02-06 2 views
4

나는 타입 TimeSpan?이다 Model.FirstTechSupportAssigneeElapseTime이 코드 조각에서 삼항 연산자를 사용하는 것을 시도하고있다 : 나는 삼항 연산자를 구현하기 위해 노력했다@Model (TimeSpan)을 사용하여 면도기에서 삼항 연산자를 사용하는 방법은 무엇입니까?

<dt>Assigned In</dt> 
<dd> 
@if (@Model.FirstTechSupportAssigneeElapseTime == null) 
    { @:N/A } 
else 
    { @Model.FirstTechSupportAssigneeElapseTime } 
</dd> 

하지만 나는 비참하게 실패하고 @ '모든 곳이야 나 혼란 스럽네. 이 시나리오에서 삼항 연산자를 가질 수 있습니까?

감사합니다.

답변

11

if 문 안에는 사용자가 # # ​​scope에 있기 때문에 @이 필요하지 않습니다. 조건문의 내부가 elapsetime 가정하면 (그렇지 않은 경우가있을 것입니다 문자열입니다, 당신은 면도기 범위에있는, 그래서 당신은이 또한 삼항 연산자를 사용하여 수행 할 수 있습니다

<dt>Assigned In</dt> 
<dd> 
@if (Model.FirstTechSupportAssigneeElapseTime == null) 
{ 
    @:N/A 
} 
else 
{ 
    @Model.FirstTechSupportAssigneeElapseTime 
} 
</dd> 

에서 @를해야합니까 페이지가로드 될 때 변환 컴파일 오류)

+0

사실 ElapseTime은 TimeSpan이며이 이유에 대해 불평하는 연산자입니다 ?? TimeSpan 및 문자열에 적용 할 수 없습니다. –

+0

@ GuillermoSánchez -'??'는 아마도 잘 작동하지 않을 것입니다. timespan에서'.ToString()'을 사용하면 여전히 삼항 연산자를 수행 할 수 있습니다. (내 편집 참조) –

+0

그것은 " "연산자는 다음과 같이 EllapseTime 선언이 유사하기 때문에 이상한 참조 또는 nullable 시간이 될 수 있습니다. public TimeSpan? FirstTechSupportAssigneeElapseTime {get; 개인 집합; } –

4
<dt>Assigned In</dt> 
<dd> 
    @(
     Model.FirstTechSupportAssigneeElapseTime == null 
     ? "N/A" 
     : Model.FirstTechSupportAssigneeElapseTime.ToString() //per @Guillermo Sánchez's comment, it seems that FirstTechSupportAssigneeElapseTime is of type TimeSpan 
                   //therefore the `.ToString()` was added to ensure that all parts of the if statement return data of the same type. 
    ) 
</dd> 
+1

예제를 작동 시키려면 {() 대신()을 사용해야합니다. –

+0

이 솔루션이 작동하지 않는 이유로 컴파일 오류가 반환됩니다. 'string'과 'System.TimeSpan'사이에 암시 적 변환이 없으므로 조건 식을 결정할 수 없습니다. {및()을 (를) 시도했습니다. –

+1

@NickAlbrecht 그 일을 해 줘서 고마워, 너 둘 다 –

관련 문제