Web design and hosting, database, cloud and social media solutions that deliver business results
  • Soluzioni aziendali
    • automazione dei processi robotici
    • Software
    • Servizi database
      • Aggiornamento del server e servizi DBA
      • Integrazione dei dati
      • Power BI
      • Servizi di Datawarehouse
    • Sito Web Design
      • Design del logo
      • Gateway di pagamento
      • Localizzazione e traduzione web
      • Ottimizzazione del sito web
      • Sicurezza del sito
      • Strumenti tecnici
    • Servizi per gli affari
      • Microsoft Azure
      • Servizi Google Cloud
      • Servizi Web Amazon
    • Microsoft Office
    • Servizi di consulenza e gestione dei social media
  • Accademia
    • Il nostro ambiente di prova
    • Imparare a usare i database
      • Le basi
      • Ottieni una query aperta
      • Piano di manutenzione di SQL Server 2008
      • Utilizzo dei dati di SQL Server
      • Utilizzo delle date di SQL Server
      • Utilizzo delle funzioni di SQL Server
      • Utilizzo di SQL Server Pivot-Unpivot
      • Strumenti
    • Imparare il web design
      • Costruire il sistema di gestione dei contenuti di Ousia
      • ASP-NET
      • CSS
      • Utilizzo di JavaScript
    • Usando i social media
      • Chiedere una recensione su Google
      • Dimensioni delle immagini dei social media
      • Modifica di un account Facebook da personale a aziendale
      • Scegliere dove concentrare lo sforzo sui social media
      • Utilizzo dei metadati per impostare le immagini dei social media
    • Imparare a usare il cloud e i servizi informatici
      • Errore dell'utilità di pianificazione 2147943645
      • Richiesta SSL e generazione di file PFX in OpenSSL Simple Steps
  • Chi Siamo
    • Carriere
      • Traduttore inglese-portoghese
      • Traduttore inglese-spagnolo
    • Portfolio
    • Squadra
      • Adrian Anandan
      • Alì Al Amine
      • Ayse Hur
      • Chester Copperpot
      • Gavin Clayton
      • Sai Gangu
      • Suneel Kumar
      • Surya Mukkamala
عربى (AR)čeština (CS)Deutsch (DE)English (EN-US)English (EN-GB)Español (ES)فارسی (FA)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

Creazione di un CMS semplice in SQL e .NET

Come costruire un Content Management System (CMS) con un Server SQL e una web app form ASP.NET. Questo è dalla prima versione di Ousia.

Contesto

Questo articolo è stato scritto per la prima volta nel 2012. La tecnologia è notevolmente avanzata in questo periodo, ma lo lasceremo qui nel caso qualcuno lo trovasse utile.

Benvenuti nell'articolo per la creazione di un CMS. Questo articolo richiede almeno una conoscenza di base di SQL e HTML e una copia di SQL Server e Visual Studio 2008 installata.

Il tuo sito è arrivato alla fase in cui vuoi iniziare ad aggiungere contenuti in modo dinamico, ci sono molte opzioni là fuori, sia gratuite che a pagamento ( Elenco su Wikipedia ), ma che ne dici di eliminare l'intermediario e costruirne uno tuo?

Entriamo subito nella codifica, il primo passo è aggiungere l'archivio utente ASP integrato, se non l'hai mai fatto, leggi questo articolo Introduzione all'appartenenza .

Il secondo passo da compiere sarà l'aggiunta delle nostre tabelle SQL e delle procedure memorizzate al database. Il campo DocumentID è impostato su una chiave primaria per prestazioni migliori. Se sei un principiante SQL, cerca le seguenti idee;

  • Chiavi primarie
  • Chiavi Estere
  • Tipi di dati SQL

SQL

--Create TablesCREATE TABLE DocumentMenu(DocumentMenuID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_DocumentMenuID PRIMARY KEY,DocumentMenuName nvarchar(100) NULL,DocumentMenuMulti bit NULL)INSERT INTO DocumentMenu(DocumentMenuName,DocumentMenuMulti) SELECT 'Home',0INSERT INTO DocumentMenu(DocumentMenuName,DocumentMenuMulti) SELECT 'About',0INSERT INTO DocumentMenu(DocumentMenuName,DocumentMenuMulti) SELECT 'SQL',0INSERT INTO DocumentMenu(DocumentMenuName,DocumentMenuMulti) SELECT 'NET',0GOCREATE TABLE Document(DocumentID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_DocumentID PRIMARY KEY,DocumentMenuLinkID int NULL CONSTRAINT FK_DocumentMenuLinkID FOREIGN KEY REFERENCES DocumentMenu(DocumentMenuID),DocumentName varchar(100) NULL,DocumentHeader varchar(100) NULL,DocumentText varchar(max) NULL,DocumentLastUpdated datetime NULL,DocumentKeyWords varchar(250) NULL,DocumentDescription varchar(250) NULL,DocumentSubjects varchar(250) NULL)GOINSERT INTO Document(DocumentMenuLinkID,DocumentName) SELECT 1,'Home'INSERT INTO Document(DocumentMenuLinkID,DocumentName) SELECT 2,'About'GO--Update DocumentsCREATE PROC UpdDocument(@DocumentID INT,@DocumentMenuLinkID INT,@DocumentName VARCHAR(100),@DocumentHeader VARCHAR(100),@DocumentText VARCHAR(MAX),@DocumentKeyWords VARCHAR(250),@DocumentDescription VARCHAR(250))AS BEGINIF @DocumentID = 0 BEGINPRINT 'Insert'INSERT INTO Document(DocumentMenuLinkID,DocumentName,DocumentHeader,DocumentText,DocumentLastUpdated,DocumentKeyWords,DocumentDescription)SELECT @DocumentMenuLinkID,@DocumentName,@DocumentHeader,@DocumentText,GETDATE(),@DocumentKeyWords,@DocumentDescriptionSELECT SCOPE_IDENTITY()RETURNENDIF @DocumentID <>0 BEGINPRINT 'Update'UPDATE Document SETDocumentMenuLinkID=@DocumentMenuLinkID,DocumentName=@DocumentName,DocumentHeader=@DocumentHeader,DocumentText=@DocumentText,DocumentLastUpdated=GETDATE(),DocumentKeyWords=@DocumentKeyWords,DocumentDescription=@DocumentDescriptionWHERE DocumentID=@DocumentIDENDENDGO--Get DocumentsCREATE PROC GetDocuments(@SubjString NVARCHAR(100)) AS BEGINDECLARE @DocumentMenuLinkID INT=(SELECT TOP 1 DocumentMenuID FROM DocumentMenu WHERE DocumentMenuName LIKE @SubjString)SELECT 'Article: ' + DocumentName DocumentName,REPLACE('Blog/'+DocumentSubjects+'/'+CAST(DocumentID AS VARCHAR(10)),' ','')+'/'+REPLACE(DocumentHeader,' ',' ') URL,'Description: ' + DocumentDescription DocumentDescription,'Keywords: ' + DocumentKeyWords DocumentKeyWords,CONVERT(VARCHAR(10),DocumentLastUpdated,103) DocumentLastUpdatedFROM DocumentINNER JOIN DocumentMenu ON DocumentMenuID=DocumentMenuLinkIDWHERE DocumentMenuLinkID=@DocumentMenuLinkIDORDER BY DocumentLastUpdated DESCENDGO--Get DocumentCREATE PROC GetDocument(@DocumentID INT) AS BEGINSELECT TOP 1 Document.*,DocumentMenuMultiFROM DocumentINNER JOIN DocumentMenu ON DocumentMenuID=DocumentMenuLinkIDWHERE DocumentID=@DocumentIDENDGO

Configurazione dell'applicazione

Questo è tutto per il codice SQL, la fase successiva è l'impostazione di una pagina Web per gestire la visualizzazione del nostro documento, un elenco di documenti da modificare e una pagina di modifica del documento.

Apri un nuovo progetto o quello a cui vuoi aggiungerlo. Dobbiamo aggiungere Global.asax (Global Application Class) a questo progetto, aggiungere la gestione delle rotte e registrare le rotte nella tabella. La seguente applicazione ha le seguenti pagine accessibili a tutti;

  • Pagina iniziale
  • Informazioni sulla pagina
  • Pagina di accesso (coperta in un articolo separato)
  • Directory del blog (tutti i documenti)
  • Blog Sub Directory (SQL, .NET per esempio)
  • Articoli del blog

Web Routing Config

<connectionStrings>  <add name="MySqlConnection"connectionString="Data Source={servername};Initial Catalog={databasename};Integrated Security=True"providerName="System.Data.SqlClient" /><connectionStrings><system.web>  <httpsRuntime requestValidationMode="2.0"/><system.web><system.webServer>  <modules runAllManagedModulesForAllRequests="True"/><system.webServer>

Importare

Sarà necessario importare System.Web.Routing.

Ho commentato ogni riga per mostrarti cosa sta facendo ciascuno. dobbiamo anche creare una connessione SQL nel nostro file di configurazione web.

Sto usando TinyMCE, un editor Java Script più avanti, quindi dobbiamo anche cambiare la Modalità di convalida della richiesta e il routing della pagina richiede l'aggiornamento dei moduli.

LoaderVBC#

VB

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) 'This code you only need to update  'Fires when the application is started  RegisterRoutes(RouteTable.Routes)End SubSub RegisterRoutes(ByVal routes As RouteCollection) 'This code you will need to add  routes.MapPageRoute("", "Home/", "~/Home.aspx", False, New RouteValueDictionary(New With {.ArticleID = "1"})) 'Manual Route ID 1 is home page  routes.MapPageRoute("", "About/", "~/About.aspx", False, New RouteValueDictionary(New With {.ArticleID = "2"})) 'Manual Route  routes.MapPageRoute("", "Blog/{ArticleSection}/{ArticleID}/{*pathInfo}", "~/ContentPage.aspx") 'Article route to ignore anything further than the Article ID  routes.MapPageRoute("", "Blog/{ArticleSection}/{ArticleID}/", "~/ContentPage.aspx") 'Article route using the Article ID  routes.MapPageRoute("", "Blog/{ArticleSection}/", "~/ContentSubj.aspx") 'Article route using the Section ID  routes.MapPageRoute("", "Blog/{*pathInfo}", "~/ContentSubj.aspx") 'Route to take us into the index  routes.MapPageRoute("", "DocumentManager/{DID}/", "~/ManageDocument.aspx") 'Route to take us to edit document  routes.MapPageRoute("", "DocumentManager/", "~/ManageDocuments.aspx") 'Route to take us to the list of documentsEnd Sub

C#

public void Application_Start(object sender, EventArgs e) //This code you only need to update{  //Fires when the application is started  RegisterRoutes(RouteTable.Routes);}public void RegisterRoutes(RouteCollection routes) //This code you will need to add{  routes.MapPageRoute("", "Home/", "~/Home.aspx", false, new RouteValueDictionary(new { ArticleID = "1" }));  //Manual Route ID 1 is home page  routes.MapPageRoute("", "About/", "~/About.aspx", false, new RouteValueDictionary(new { ArticleID = "2" }));  //Manual Route  routes.MapPageRoute("", "Blog/{ArticleSection}/{ArticleID}/{*pathInfo}", "~/ContentPage.aspx");  //Article route to ignore anything further than the Article ID  routes.MapPageRoute("", "Blog/{ArticleSection}/{ArticleID}/", "~/ContentPage.aspx");  //Article route using the Article ID  routes.MapPageRoute("", "Blog/{ArticleSection}/", "~/ContentSubj.aspx");  //Article route using the Section ID  routes.MapPageRoute("", "Blog/{*pathInfo}", "~/ContentSubj.aspx");  //Route to take us into the index  routes.MapPageRoute("", "DocumentManager/{DID}/", "~/ManageDocument.aspx");  //Route to take us to edit document  routes.MapPageRoute("", "DocumentManager/", "~/ManageDocuments.aspx");  //Route to take us to the list of documents}

Gestisci Libreria documenti

Qui avremo un elenco di tutti i documenti e i collegamenti per visualizzarli o modificarli...

Per questo aggiungi un nuovo modulo web chiamato ManageDocuments.aspx

LoaderHTMLVBC#

HTML

<div><asp:GridView ID="MyDocs" runat="server" AutoGenerateColumns="False" Width="100%" BorderStyle="None" GridLines="None">    <Columns>        <asp:HyperLinkField DataNavigateUrlFields="EditURL"DataTextField="DocName"            HeaderText="EditDocument" />        <asp:BoundField DataField="DocumentHeader"HeaderText="DocumentHeader" />    </Columns></asp:GridView></div><div><a href="DocumentManager/0/">Add New</a></div>

VB

Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString)Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender  If User.IsInRole("SiteAdmin") Then  'If Not IsPostBack Then  Dim com As New SqlCommand("SELECT 'DocumentManager/'+CAST(DocumentID AS VARCHAR(10)) EditURL,DocumentName DocName,DocumentHeader,REPLACE('Blog/'+DocumentSubjects+'/'+CAST(DocumentID AS VARCHAR(10)),' ','')+'/'+DocumentName PreviewURL FROM Document", con)  con.Open()  Dim dr = com.ExecuteReader  MyDocs.DataSource = dr  MyDocs.DataBind()  con.Close()  'End If  End IfEnd Sub

C#

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString);protected void Page_Load(object sender, System.EventArgs e){  if (User.IsInRole("SiteAdmin"))  {  //If Not IsPostBack Then  SqlCommand com = new SqlCommand("SELECT 'DocumentManager/'+CAST(DocumentID AS VARCHAR(10)) EditURL,DocumentName DocName,DocumentHeader,REPLACE('Blog/'+DocumentSubjects+'/'+CAST(DocumentID AS VARCHAR(10)),' ','')+'/'+DocumentName PreviewURL FROM Document", con);  con.Open();   dynamic dr = com.ExecuteReader;  MyDocs.DataSource = dr;  MyDocs.DataBind();  con.Close();  //wwwd If  }}

Editor di testo

Qui ho usato l'editor di testo Tiny MCE. Ho scoperto che funziona davvero bene con ciò che volevo ottenere, tuttavia ci sono alcuni passaggi in più per usarlo ...

Inizia aggiungendo un nuovo modulo web chiamato ManageDocument.aspx. Potrebbe essere necessario aggiungere manualmente lo script manager.

LoaderHTMLJavaScriptVBC#

HTML

<asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional"><ContentTemplate><div style="text-align: center;"><div>Menu</div><div>    <asp:DropDownList ID="PageMenu" runat="server">    </asp:DropDownList>    </div><div>Page Name</div><div><asp:TextBox ID="PageName" runat="server" Width="400px"></asp:TextBox></div><div>Header</div><div><asp:TextBox ID="HeaderText" runat="server" Width="99%"></asp:TextBox></div><div>Content</div><div><textarea name="content" cols="1" rows="45" style="width: 100%; margin: 0 0 0 0;" id="ContentText" runat="server"></textarea></div><div>Key Words</div><div><asp:TextBox ID="KeyWords" runat="server" Width="99%"></asp:TextBox></div><div>Description</div><div><asp:TextBox ID="Description" runat="server" Width="99%"></asp:TextBox></div><div><asp:Button ID="AddUpdate" runat="server" Text="Button"/></div></div></ContentTemplate>    <triggers>        <asp:PostBackTrigger ControlID="AddUpdate"/>    </triggers></asp:UpdatePanel>

JavaScript

<script type="text/javascript" src="/tiny_mce/tiny_mce_src.js"></script><script type="text/javascript">  tinyMCE.init({  mode: "textareas",  theme: "advanced",  plugins: "emotions,spellchecker,advhr,insertdatetime,preview",  theme_advanced_buttons1: "newdocument,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,fontselect,fontsizeselect,formatselect",  theme_advanced_buttons2: "cut,copy,paste,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,image,|,code,preview,|,forecolor,backcolor",  theme_advanced_buttons3: "insertdate,inserttime,|,spellchecker,advhr,,removeformat,|,sub,sup,|,charmap,emotions",  theme_advanced_toolbar_location: "top",  theme_advanced_toolbar_align: "left",  theme_advanced_statusbar_location: "bottom",  width: '100%'  });  function UpdateTextArea() {  tinyMCE.triggerSave(false, true);  }</script>

VB

Imports System.Data.SqlClient 'Above your classDim con As New SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString)  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender  If User.IsInRole("SiteAdmin") Then  If Not IsPostBack Then  If Not IsNothing(Page.RouteData.Values("DID")) Then  AddUpdate.Attributes.Add("onclick", "UpdateTextArea()")  Dim docID As String = Page.RouteData.Values("DID").ToString  If docID = 0 Then  AddUpdate.Text = "Add Document"  Else  AddUpdate.Text = "Update Document"  End If  Dim com As New SqlCommand("SELECT * FROM DocumentMenu WHERE (CASE WHEN " & docID & "=0 THEN 1 ELSE DocumentMenuMulti END)=DocumentMenuMulti; " & _  "EXEC GetDocumentByID " & docID & "", con)  con.Open()  Dim da = New SqlDataAdapter(com)  Dim ds As New DataSet  da.Fill(ds)  'Menu  PageMenu.DataTextField = "DocumentMenuName"   PageMenu.DataValueField = "DocumentMenuID"  PageMenu.DataSource = ds.Tables(0)  PageMenu.DataBind()  'Data  Dim dr = ds.Tables(1).CreateDataReader  While dr.Read()  PageMenu.SelectedValue = dr.Item(1).ToString  PageName.Text = dr.Item(2).ToString  HeaderText.Text = dr.Item(3).ToString  ContentText.InnerHtml = httpsUtility.HtmlDecode(dr.Item(4).ToString)  KeyWords.Text = dr.Item(6).ToString  Description.Text = dr.Item(7).ToString  PageMenu.Enabled = CBool(dr.Item(9).ToString)  End While  con.Close()  Else  Response.Redirect("/DocumentManager")  End If  Else  End If  Else  Response.Redirect("/Login")  End If  End Sub  Private Sub AddUpdate_Click() Handles AddUpdate.Click  If Not IsNothing(Page.RouteData.Values("DID")) Then  Dim docID As String = Page.RouteData.Values("DID").ToString  Dim DocumentMenuLinkID As Integer = PageMenu.SelectedValue  Dim DocumentName As String = Replace(PageName.Text, "'", "''")  Dim DocumentHeader As String = Replace(HeaderText.Text, "'", "''")  Dim DocumentText As String = Replace(ContentText.InnerHtml, "'", "''")  Dim DocumentKeyWords As String = Replace(KeyWords.Text, "'", "''")  Dim DocumentDescription As String = Replace(Description.Text, "'", "''")  Dim com As New SqlCommand("EXEC UpdDocument " & docID & ",'" & DocumentMenuLinkID & "','" & DocumentName & "','" & DocumentHeader & "',N'" & DocumentText & "','" & DocumentKeyWords & "','" & DocumentDescription & "'", con)  con.Open()  Dim a As String = com.ExecuteScalar  con.Close()  If docID = 0 Then  Response.Redirect("~/DocumentManager/" + a)  End If  End IfEnd Sub

C#

using System.Data.Sql;//Above your class
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString);protected void Page_Load(object sender, System.EventArgs e){  if (User.IsInRole("SiteAdmin"))  {  if (!IsPostBack)  {  if ((Page.RouteData.Values("DID") != null))  {   AddUpdate.Attributes.Add("onclick", "UpdateTextArea()");  string docID = Page.RouteData.Values("DID").ToString;  if (docID == 0)  {  AddUpdate.Text = "Add Document";  }  else  {  AddUpdate.Text = "Update Document";  }  SqlCommand com = new SqlCommand("SELECT * FROM DocumentMenu WHERE (CASE WHEN " + docID + "=0 THEN 1 ELSE DocumentMenuMulti END)=DocumentMenuMulti; " + "EXEC GetDocumentByID " + docID + "", con);  con.Open();  dynamic da = new SqlDataAdapter(com);  DataSet ds = new DataSet();  da.Fill(ds);  //Menu  PageMenu.DataTextField = "DocumentMenuName";  PageMenu.DataValueField = "DocumentMenuID";  PageMenu.DataSource = ds.Tables(0);  PageMenu.DataBind();  //Data  dynamic dr = ds.Tables(1).CreateDataReader;  while (dr.Read())  {  PageMenu.SelectedValue = dr.Item(1).ToString;  PageName.Text = dr.Item(2).ToString;   HeaderText.Text = dr.Item(3).ToString;  ContentText.InnerHtml = httpsUtility.HtmlDecode(dr.Item(4).ToString);  KeyWords.Text = dr.Item(6).ToString;  Description.Text = dr.Item(7).ToString;   PageMenu.Enabled = Convert.ToBoolean(dr.Item(9).ToString);  }  con.Close();  }  else  {  Response.Redirect("/DocumentManager");  }  }  else  {  }  }  else  {  Response.Redirect("/Login");  }}private void AddUpdate_Click(){  if ((Page.RouteData.Values("DID") != null))  {  string docID = Page.RouteData.Values("DID").ToString;  int DocumentMenuLinkID = PageMenu.SelectedValue;  string DocumentName = Strings.Replace(PageName.Text, "'", "''");  string DocumentHeader = Strings.Replace(HeaderText.Text, "'", "''");  string DocumentText = Strings.Replace(ContentText.InnerHtml, "'", "''");  string DocumentKeyWords = Strings.Replace(KeyWords.Text, "'", "''");  string DocumentDescription = Strings.Replace(Description.Text, "'", "''");  SqlCommand com = new SqlCommand("EXEC UpdDocument " + docID + ",'" + DocumentMenuLinkID + "','" + DocumentName + "','" + DocumentHeader + "','" + DocumentText + "','" + DocumentKeyWords + "','" + DocumentDescription + "'", con);  con.Open();  string a = com.ExecuteScalar;  con.Close();  if (docID == 0)  {  Response.Redirect("~/DocumentManager/" + a);  }  }}

Pagina dell'elenco

Questa pagina visualizzerà tutti i tuoi articoli utilizzando l'argomento del contenuto che abbiamo indirizzato.

Per come è stata progettata possiamo utilizzare la stessa pagina per due sezioni, fornendo di fatto un filtro solo dove serve...

Aggiungi un nuovo modulo web ContentSubj.aspx

LoaderHTMLVBC#

HTML

<div><h1><asp:Label id="HeaderLabel" runat="server" Text="PageTitle"></asp:Label></h1></div><div id="ContentText" runat="server"></div><div><asp:GridView id="ContentSub" runat="server" AutoGenerateColumns="False" GridLines="None"ShowHeader="False"Width="100%">    <Columns>        <asp:TemplateField>            <ItemTemplate>               <div style="width: 80%; float: left;">                   <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("HyperLink") %>' Text='<%# Eval("DocumentName") %>'></asp:HyperLink>               </div>               <div style="width: 19%; float: left;">                   <asp:Label ID="Label2" runat="server" text='<%# Eval("DocumentLastUpdated") %>'></asp:Label>               </div>               <div style="width: 100%; float: left; clear: both;">                   <asp:Label ID="Label1" runat="server" text='<%# Eval("DocumentDescription") %>'></asp:Label>               </div>            </ItemTemplate>        </asp:TemplateField>    </Columns></asp:GridView></div>

VB

Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString)Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load  Try  Page.Title = "gsclayton.net Technical Articles"  Page.MetaKeywords = "gsclayton.net, Databases, Web Design, SQL, HTML, .NET, ASP, CSS, Technical Articles"  Page.MetaDescription = "gsclayton.net Databases and Web Design, SQL, HTML, .NET, ASP, CSS, Technical Articles"  Dim Str As String = Replace(Page.RouteData.Values("Subj").ToString, "'", "''")  Subject.Text = "La " + Str + " Articles"  Dim com As New SqlCommand("EXEC GetDocuments '%" & Str & "%'", con)  con.Open()  Dim dr = com.ExecuteReader  MyDocs.DataSource = dr  MyDocs.DataBind()  dr.Close()  con.Close()  Catch ex As Exception  Response.Redirect("/Blog")  End TryEnd Sub

C#

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString);protected void Page_Load(object sender, System.EventArgs e){  try  {  Page.Title = "gsclayton.net Technical Articles";  Page.MetaKeywords = "gsclayton.net, Databases, Web Design, SQL, HTML, .NET, ASP, CSS, Technical Articles";  Page.MetaDescription = "gsclayton.net Databases and Web Design, SQL, HTML, .NET, ASP, CSS, Technical Articles";  string Str = Strings.Replace(Page.RouteData.Values("Subj").ToString, "'", "''");  Subject.Text = "La " + Str + " Articles";  SqlCommand com = new SqlCommand("EXEC GetDocuments '%" + Str + "%'", con);  con.Open();  dynamic dr = com.ExecuteReader;  MyDocs.DataSource = dr;  MyDocs.DataBind();  dr.Close();  con.Close();  }  catch (Exception ex)  {  Response.Redirect("/Blog");  }}

Pagine di contenuto

Se non hai bisogno di contenuti personalizzati nella tua home e sulle pagine, aggiungi semplicemente la Pagina dei contenuti e modifica il percorso della pagina...

In queste pagine puoi aggiungere e stilizzare come preferisci, tuttavia finché hai il seguente codice funzionerà.

LoaderHTMLVBC#

HTML

<h1><asp:Label ID="Subject" runat="server" Text="My QMS System"></asp:Label></h1><div id="MyContent" runat="server"></div><div id="LastUpd" runat="server" style="clear: both;"></div>

VB

Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString)Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender  'If Not IsPostBack ThenIf Not IsNothing(Page.RouteData.Values("ArticleID")) Then  Dim LastUpdated As Label = Master.FindControl("LastUpdatedLabel") 'Control on my Master Page, this can be added to your page insteadv as a labeldocID  Dim did As String = Page.RouteData.Values("ArticleID").ToString  Dim com As New SqlCommand("EXEC GetDocument '" & Replace(did, "'", "''") & "'", con)  con.Open()  Dim dr = com.ExecuteReader  While dr.Read()  HeaderLabel.Text = dr.Item(3).ToString  ContentText.InnerHtml = httpsUtility.HtmlDecode(dr.Item(4).ToString)  LastUpdated.Text = Format(CDate(dr.Item(5).ToString), "dd/MM/yyyy")  Page.Header.Title = dr.Item(3).ToString  MetaKeywords = dr.Item(6).ToString  MetaDescription = dr.Item(7).ToString  End While  dr.Close()  con.Close()  'End IfEnd IfEnd Sub

C#

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString);protected void Page_Load(object sender, System.EventArgs e){ //If Not IsPostBack Then if ((Page.RouteData.Values("ArticleID") != null)) {  Label LastUpdated = Master.FindControl("LastUpdatedLabel"); //Control on my Master Page, this can be added to your page insteadv as a labeldocID string did = Page.RouteData.Values("ArticleID").ToString;  SqlCommand com = new SqlCommand("EXEC GetDocument '" + Strings.Replace(did, "'", "''") + "'", con);  con.Open();  dynamic dr = com.ExecuteReader; while (dr.Read()) {  HeaderLabel.Text = dr.Item(3).ToString;  ContentText.InnerHtml = httpsUtility.HtmlDecode(dr.Item(4).ToString);  LastUpdated.Text = Strings.Format(Convert.ToDateTime(dr.Item(5).ToString), "dd/MM/yyyy");  Page.Header.Title = dr.Item(3).ToString;  MetaKeywords = dr.Item(6).ToString;  MetaDescription = dr.Item(7).ToString;  }  dr.Close();  con.Close();  }}

Avvolgendo

Questo è un vecchio documento, ma contiene ancora idee rilevanti, quindi usalo come base per qualsiasi cosa tu voglia fare!

Utile?

Please note, this commenting system is still in final testing.

Autore

Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

Site Links

RSSLoginLink Cookie PolicyMappa del sito

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom

Partnered With

Le impostazioni di questo sito sono impostate per consentire tutti i cookie. Questi possono essere modificati sulla nostra pagina politica e le impostazioni dei cookie. Continuando a utilizzare questo sito l'utente accetta l'utilizzo dei cookie.
Ousia Logo
Logout
Ousia CMS Loader