2009-11-19 2 views
0

Je suis nouveau à ASP.NET et maintenant je crée un fichier HTML dans ASP.NET C# qui est stocké dans un dossier. Maintenant, lorsque le fichier aspx est exécuté, il va chercher des données et les afficher dans la sortie. Et il y a un bouton. Lorsque je clique dessus, le fichier HTML est créé.Génération du fichier HTML qui récupérer les données à partir de SQL dans le répertoire C# et ASP.NET

Maintenant, mon problème est que je veux aller chercher les mêmes données dans le fichier HTML aussi pour l'afficher et l'enregistrer.

Je crée le fichier HTML en utilisant StreamWriter et WriteLine dans le code-behind. Ou existe-t-il un autre moyen de convertir ce fichier de sortie aspx dans un fichier HTML et de l'enregistrer dans le même dossier du projet?

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string thisdir = Server.MapPath("./New Folder/SalesContract.htm"); 
    StreamWriter sw = new StreamWriter(thisdir, true); 
    sw.WriteLine("<html>"); 
    sw.WriteLine("<head>"); 
    sw.WriteLine("<title> Sales Invoice</title>"); 
    ............. 
    sw.WriteLine("<b> <label for=lb_seller1 value=" + ds.Tables[0].Rows[0]["po_seller_Name"].ToString() + "/></b><br/>"); 
    ........ 
    sw.WriteLine("</body>"); 
    sw.WriteLine("</html>"); 
    sw.Flush(); 
    sw.Close() 
} 

C'est l'échantillon que j'utilise. Je récupère les données à afficher dans la sortie aspx et cela fonctionne. Maintenant, j'ai aussi besoin de récupérer les mêmes données dans ce fichier.

+0

Vous avez probablement besoin d'expliquer pourquoi vous avez besoin de générer une page html autonome - la question est étrange et cela signifie que vous aurez peut-être du mal à obtenir une réponse directe à votre question. – Murph

Répondre

2

Il s'agit d'une manière totalement non-standard et inefficace de le faire. La manière normale de le faire serait d'avoir une page aspx standard, avec une sorte de contrôle de répéteur ou de grille de données qui affiche les données requises, et vous pouvez ensuite accéder à cette page d'ailleurs dans votre site Web. Vous passez les variables appropriées à la page via la chaîne querystring/session/quelquechose, et la page utilise ces variables pour ensuite sélectionner les données à afficher.

Si vous essayez d'avoir une page permanente et immuable créé pour chaque visiteur à cette page, suivez les conseils ci-dessus mais regardez les méthodes pour générer la page en tant que document PDF à la place.

+0

Je ne suis pas sûr que la solution d'Anand soit vraiment moins efficace, puisque tout est compilé en CLR, mais je suis tout à fait d'accord que la bonne solution est un fichier aspx séparé. –

0

Il est fortement recommandé d'utiliser la méthode ASP.NET standard pour produire une page HTML (contrôles Repeater etc ...), plutôt que d'essayer d'écrire soi-même HTML - c'est, après tout, exactement la tâche qu'ASP .NET a été conçu pour!

Si vous voulez voir le rendu HTML pour une page ASP.NET, vous pouvez utiliser un code similaire à ce qui suit:

StringBuilder sb = new StringBuilder(); 
StringWriter sw = new StringWriter(sb); 
HtmlTextWriter hw = new HtmlTextWriter(sw); 
this.Render(hw); 
return sb.ToString(); 

Vous devez vous assurer que vous faites cela assez tard dans la page lifecycle pour le traitement de la page à avoir terminé (par exemple lors de SaveStateComplete.)

0

Je vous recommande de passer par quelques tutoriels ASP.NET pour avoir une idée de la structure, et apprendre à l'utiliser correctement. Je sais qu'il faudra du temps pour passer en revue les tutoriels, mais je pense que le temps est bien passé.

Microsoft Learn ASP.NET est un endroit pour commencer. Vous pourriez probablement trouver une tonne de plus en les recherchant sur Google.

Questions connexes