2010-11-26 6 views
0

Ich habe das Standard-Suchszenario: Benutzer gibt Suchparameter ein und klickt auf die Suchschaltfläche - Ergebnisse werden im unteren Bereich angezeigt. Was ich tun möchte, ist die Sichtbarkeit des Panels basierend darauf, ob Suchergebnisse verfügbar sind oder nicht. Ich habe versucht, mein Panel wie folgt zu codieren, aber zur Laufzeit bekomme ich einen Parse-Fehler.ASP.NET MVC - Ein Panel ausblenden, wenn das Modell nicht verfügbar ist

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

Der Parse-Fehler, die ich bekommen habe, ist dies:

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

Wie schalte ich das Panel über die Verfügbarkeit des Modells abhängig?

+2

Nun, für den Anfang sollten Sie nicht ** Ich REPEAT NICHT ** Verwendung '' in einer MVC-Anwendung –

+0

asp: panel? Ernsthaft ... Dudel! Warum fügst du nicht auch 'EnableViewState = true' dort hinzu - schau was passiert, lol – RPM1984

+1

haha, @RPM ... schön, dich zu sehen. –

Antwort

3

Wie ich in meinem Kommentar sagte, sollten Sie nicht eine <asp:panel> in Ihrer asp.net-Anwendung verwenden.

Stattdessen baut eine Teilansicht (ascx)

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

Dann in Ihrer Teilansicht, können Sie all „Zeug“ setzen, die Sie anzeigen möchten, wenn das Modell ist leer.

Sie können die Teil in einer von zwei Stellen setzen. Wenn es freigegeben ist, legen Sie es in den Ordner Views/Shared. Wenn es spezifisch für den Controller ist, legen Sie es in den Ordner Views/[ControllerName].

hinweis: bitte verzeih mir meine C# ... ich bin nicht so gut.

+0

Folgefrage - Ich nehme an, HasValue ist ein neues Attribut für das Modell und Sie schlagen auch vor, dass Model niemals null sein sollte. Richtig? Warum sollte auch nicht in einer MVC-Anwendung verwendet werden? – Naresh

+0

MVC ist kein Webformular. Das meiste, was Sie im Internet finden, beschäftigt sich mit Webforms, so dass Sie eine Menge Zeug mit '' finden. Sie wollen keine "Steuerelemente" auf Ihren MVC Views verwenden (sie sind keine Webforms). –

+0

[HasValue] (http://stackoverflow.com/questions/676078/which-isprefered-nullable-hasvalue-or-nullable-null) einfach überprüfen, ob es "irgendetwas" in dem Objekt gibt. '! null' nennt den 'HasValue' sowieso. –

Verwandte Themen