2009-01-18 4 views
2

J'ai un contrôle répéteur où le <% # DataBinder.Eval (Container.DataItem, « Affichage »)%> partie n » t montrer. Le code que les « Display » magasins est défini comme suit:<script> ...</script> l'intérieur d'un code de contrôle de répéteur ne se présente pas dans le code source de la page rendre

item.Display = "<script type='text/javascript'>AudioPlayer.embed('ffcedea7- 
4822-465f-85b6-89924f7b81fa', {soundFile: 'http://s3.amazonaws.com/blah/af8g7fd3-1793 
-4b5e-92b7-9d11ad1cc19c.mp3'});</script>"; 

Après chargement de la page, le fichier embed audio ne se présente pas. Le code n'apparaît même pas dans la source. Si j'ajoute une chaîne aléatoire après la balise de script de fin, cette chaîne aléatoire apparaîtra.

item.Display = "<script type='text/javascript'>AudioPlayer.embed('ffcedea7-4822-4 
65f-85b6-89924f7b81fa', {soundFile: 'http://s3.amazonaws.com/blah/af8g7fd3-1793-4b 
5e-92b7-9d11ad1cc19c.mp3'});</script> THIS IS THE RANDOM STRING"; 

Ainsi, la source de la page il aura « CECI EST LE HASARD STRING » mais pas la partie du script.

Est-ce que quelqu'un sait ce qui cause ce problème et comment il peut être réparé? Merci!

Edit: Voici le code répéteur:

<asp:Repeater ID="repeaterAddable" runat="server"> 
    <ItemTemplate> 
     <div class="background-white"> 
      <div style="padding: 15px;"> 
       <table style="width: 100%" cellspacing="5"> 
        <tr> 
         <td colspan="3" align="right"> 
          Include this? <input type="checkbox" name="include<%#DataBinder.Eval(Container.DataItem, "Index")%>" /> 
         </td> 
        </tr> 
        <tr> 
         <td style="width: 30%;" valign="top"> 

         </td> 
         <td style="width: 30%;" valign="top"> 
          <div class="media"> 

           <%#DataBinder.Eval(Container.DataItem, "Display")%> 

          </div> 
         </td> 
         <td style="width: 30%;" valign="top"> 

         </td> 
        </tr> 
       </table> 
      </div> 
     </div> 
     <br /> 
    </ItemTemplate> 
</asp:Repeater> 
+0

Pouvez-vous copier et coller le code? –

+0

Je ne vois aucun

0

Peut-être que vous avez des paramètres de sécurité sur votre page ou webconfig ...

J'ai essayé de reproduire votre situation dans une toute nouvelle page, mais elle a effectivement travaillé.

public class A 
{ 
    public string Display { get; set; } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    var list = new List<A>(); 

    var a = new A(); 
    a.Display = "<script>alert('hi')</script>S<br/>"; 

    list.Add(a); 

    rep.DataSource = list; 
    rep.DataBind(); 
} 

Et dans la page

<asp:Repeater ID="rep" runat="server"> 
    <ItemTemplate> 
     <%# DataBinder.Eval(Container.DataItem, "Display") %> 
    </ItemTemplate> 
</asp:Repeater> 

Peut-être que vous pouvez essayer de régler le Display avec HttpUtility.UrlEncode et obtenir avec HttpUtility.UrlDecode ...

Questions connexes