2009-05-01 5 views
0

Ich verwende .NET MVC, und innerhalb der Ansicht Seiten stelle ich eine Content, die eine ID enthält, wie dies auf der Master-Seite verwendet werden:einbetten Content zwischen doppelte Anführungszeichen

Seite anzeigen:

<asp:Content ID="CDomBodyId" ContentPlaceHolderID="DomBodyId" runat="server">LmpDemoRequests</asp:Content> 

Master-Seite:

<body id='<asp:ContentPlaceHolder ID="DomBodyId" runat="server"></asp:ContentPlaceHolder>'> 

So in diesem speziellen Fall der Körper Tag wie folgt auf die endgültige HTML-Seite machen würde:

Ich hätte gerne doppelte Anführungszeichen um den Body-ID-Tag, aber das Invertieren der Anführungszeichen wie folgt macht intellisense unfähig, den contentplaceholder zu finden und gibt mir eine Menge Warnungen, wenn ich kompiliere.

<body id="<asp:ContentPlaceHolder ID='DomBodyId' runat='server'></asp:ContentPlaceHolder>"> 

Gibt es eine Möglichkeit, dies zu umgehen?

Antwort

0

Versuchen Sie, BodyID als eine Eigenschaft Ihrer MasterPage zu deklarieren. Legen Sie den Wert in den Ansichtsseiten fest. Dann können Sie so etwas wie <html> <body='<%= BodyID %>'> </body </html>

+0

Ich habe versucht, dies vor zu tun, aber das Problem, das ich hatte, war, dass die BodyId von der untergeordneten Ansicht Seite eingestellt werden würde ... so durch Die Uhrzeit, zu der die untergeordnete Ansicht gerendert wird, ist zu spät, als dass die Masterseite den Wert lesen könnte. –

+0

Ich habe das gerade getestet und es hat für mich funktioniert. Haben Sie den Eigenschaftswert im Page_Load-Ereignis der Ansichtsseite festgelegt? –

+0

Ja, weißt du was, ich denke, ich habe versucht, den Wert innerhalb des Inhalts der eigentlichen View-Seite selbst zu setzen, was ich realisiere, ist nicht korrekt ... also denke ich, dass dein Weg der richtige Weg sein könnte. –

1

Dies ist ein Problem mit ASP.NET-Editor. Es ist nicht spezifisch für MVC. Ich denke, die Problemumgehung ist ziemlich gut und ich sehe keinen spezifischen Nachteil.

0

nicht sicher, ob ich Ihre Frage falsch verstanden habe, aber Sie können auch hinzufügen:

<body id="site" runat="server"></body> 

Und dann es auf Ihrer Seite zugreifen

HtmlControl body = (HtmlControl)Master.FindControl("site"); 
body.Attributes.Add("class", "LmpDemoRequests"); 

Ich hoffe, dass ich verstehe Sie richtig.

+0

Guter Vorschlag, aber suchen die Content zu halten –