2010-11-26 4 views
0

표준 검색 시나리오가 있습니다. 사용자가 검색 매개 변수를 입력하고 검색 버튼을 클릭하면 결과가 아래 패널에 표시됩니다. 내가 원하는 것은 검색 결과의 사용 가능 여부에 따라 패널의 가시성을 제어하는 ​​것입니다. 다음과 같이 패널을 코딩하려고 시도했지만 런타임에 구문 분석 오류가 발생합니다.ASP.NET MVC - 모델을 사용할 수없는 경우 패널 숨기기

<asp:Panel ID="ResponsePanel" Visible="<%= Model != null %>" runat="server"> 
    ... 
</asp:Panel> 

내가 점점 오전 구문 분석 오류가 이것이다 :

Cannot create an object of type 'System.Boolean' from its string representation 
'<%= Model != null %>' for the 'Visible' property. 

가 어떻게 패널 모델의 가용성에 따라 전환 할 수 있습니까?

+2

글쎄, 처음에는 ** MVC 애플리케이션 –

+0

asp : panel에서 ** 을 사용하지 말아야한다. 진지하게! 왜 거기에'EnableViewState = true'를 추가하지 마십시오 - 무슨 일이 일어나는지 보시려면 Lol – RPM1984

+1

하하, @RPM ... 만나서 반가워요. –

답변

3

내 의견에 말했듯이, 당신은 <asp:panel> asp.net 응용 프로그램에서 사용해서는 안됩니다.

대신, 부분보기 (ASCX)

<% if(! Model.HasValue){ %> 
    <%: Html.Partial("WhatWouldGoInYourPanel") %> 
<% } %> 

이 그런 다음 부분보기에, 당신은 당신이 모델이 비어있는 경우 표시 할 모든 "재료"를 넣을 수 있습니다를 구축 할 수 있습니다.

두 부분 중 하나에 부분을 넣을 수 있습니다. 공유 된 경우 Views/Shared 폴더에 저장합니다. 컨트롤러에만 해당되는 경우 Views/[ControllerName] 폴더에 넣습니다.

참고 : 제 C#을 용서하십시오. ... 나는 그다지 좋지 않습니다.

+0

질문을 따릅니다 - 나는 HasValue가 모델의 새로운 속성이라고 가정하고 Model이 결코 null이 아니어야 함을 제안합니다. 옳은? 또한 을 MVC 응용 프로그램에서 사용하지 않아야하는 이유는 무엇입니까? – Naresh

+0

MVC는 웹 폼이 아닙니다. 현재 웹에서 찾을 수있는 대부분의 것들이 현재 웹폼을 다루고 있으므로 ''으로 많은 것을 발견 할 것입니다. MVC 뷰 (웹 폼이 아닌)에서 "컨트롤"을 사용하고 싶지는 않습니다. –

+0

[HasValue] (http://stackoverflow.com/questions/676078/which-is-preferred-nullable-hasvalue-or-nullable-null) 개체에 "아무것도"있는지 단순히 확인하십시오. '! null'은 어쨌든'HasValue'를 호출합니다. –

관련 문제