2009-11-10 3 views
0

Pourquoi l'appel de page.RenderControl n'évalue-t-il pas <% Response.Write("foo") %> mais évalue-t-il <%= "bar" %>? Y a-t-il autre chose que je devrais appeler à la place?RenderControl n'évalue pas Response.Writes mais évalue <%= %>?

J'étais sous l'impression que <%= %> was shorthand for Response.Write comme c'est dans ASP classique.

... <p><%= "foo" %><% Response.Write("bar"); %></p> ... 

Rendu Code de contrôle ...

string output; 

using (var mem = new StringWriter()) 
using (var writer = new XhtmlTextWriter(mem)) 
{ 
    page.RenderControl(writer); 
    output = mem.GetStringBuilder().ToString(); 
} 

sorties ...

Expected: "<p>foobar</p>" 
Actual: "<p>foo</p>" 

Répondre

3

<% =%> est le même que Response.Write dans asp.net. C'est pourquoi <% = "bar"%> fonctionne.

Il vous manque un point-virgule à la fin de <% Response.Write ("bar")%>. C'est pourquoi ça ne marche pas.

+0

Il y a un point-virgule ici et ce n'est pas une barre de rendu. Ce n'est pas la raison pour laquelle ça ne marche pas. – Dave

+0

avez-vous pu le faire fonctionner? Je me suis occupé avec d'autres choses, si ça a marché pour vous, alors je peux lancer un studio visuel et voir si nous pouvons générer des indices. –

+0

non, ça ne marche pas – Dave

1

J'ai le même problème avec le vôtre, ma solution est d'utiliser juste <%=...%> au lieu de response.write(); pense personnellement la raison ressemble plus tôt que l'ancien rendu response.write(). Une fois que le programme a atteint la fonction response.write(), l'objet RenderControl n'a aucun contrôle sur celui-ci, même s'il se trouve dans l'étiquette côté serveur.

Questions connexes