2017-08-09 4 views
1

Je travaille sur un site ASP.NET et j'utilise HttpGetRequest & HttpGetResponse pour placer le contenu de https://news.google.com/news dans un contrôle littéral sur l'une de mes pages.Comment puis-je contenir la taille de mon contrôle littéral?

Le problème est que le flux couvre toute la page. Je n'arrive pas à contrôler la taille avec un div ou un conteneur. Ainsi, le flux du littéral couvre une étiquette qui se trouve au-dessus (dans son propre div) et un menu hérité de SiteMaster.Master. Comment puis-je conserver le menu et l'étiquette au-dessus du contrôle littéral?

code derrière:

 protected void Page_Load(object sender, EventArgs e) 
    { 
     HttpWebRequest googRequest = (HttpWebRequest)HttpWebRequest.Create("https://news.google.com/news"); 
     HttpWebResponse resp = (HttpWebResponse)googRequest.GetResponse(); 
     string googNews = new System.IO.StreamReader(resp.GetResponseStream()).ReadToEnd(); 

     Literal1.Text = googNews; 

     Label1.Text = DateTime.Now.ToLongTimeString(); 
    } 

ASP:

<%@ Page Title="" Language="C#" MasterPageFile="~/SiteMaster.Master" AutoEventWireup="true" CodeBehind="Literally.aspx.cs" Inherits="DNut.Literally" %> 
 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
 
</asp:Content> 
 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
 
    <p> 
 
     <asp:Label ID="Label1" runat="server" Font-Names="Arial" Font-Size="Larger" Font-Italic="true"></asp:Label> 
 
    </p> 
 
</asp:Content> 
 

 
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" runat="server"> 
 
     <div> 
 
      <asp:Literal ID="Literal1" runat="server"></asp:Literal> 
 
     </div> 
 
</asp:Content>

Répondre

0

Le contenu, en fonction de la façon dont vous le recevez, comprendra probablement une balise html, balise head et balise body. Ce balisage n'est pas valide pour injecter au milieu d'un document html existant. La manière typique d'inclure une page entière comme celle-ci dans un autre document html est via une balise iframe.

Iframe est un peu désapprouvé dans le monde du développement web et pas beaucoup utilisé mais dans ce cas, c'est un bon ajustement pour ce que vous essayez de faire. Il permet également de protéger votre site contre les attaques XSS (cross-site scripting) (versets essayant d'injecter du balisage dans une balise littérale)

Avec une balise iframe, vous définissez l'attribut 'src' sur l'URL que vous voulez afficher et vous aurez pas besoin du literal ou le code C# lié à régler.

<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" runat="server"> 
    <iframe src='https://news.google.com/news'></iframe> 
</asp:Content> 

vous pouvez définir le style le iframe d'avoir une hauteur souhaitable et la largeur.

+0

la page de nouvelles déversements encore au-dessus des limites de la div – Heath

+0

Mon mauvais, je n'ai pas regardé assez près le code que vous utilisiez pour obtenir le contenu Je mettrai à jour ma réponse dans une seconde. –

+0

Merci Ron! Cela a accompli ce que j'ai demandé alors je marque cela comme la réponse. Juste pour le partage cependant, je dirai que lorsque vous utilisez des tags iframe pour des raisons de sécurité, le contenu du lien ne s'affiche plus. Mais cela semble être un sujet différent. Ceci est juste un laboratoire sur lequel je travaille donc il n'a pas vraiment besoin de travailler mieux que cela. Merci encore! Bonne info – Heath