Dynamic Page Creation Asp.Net
Hi friends, This is my first post of Year 2015. I am wishing you all my friends, readers and colleagues A VERY HAPPY NEW YEAR 2015. In this post we are discussing how to create Dynamic Page Creation Asp.Net. To create dynamic page in asp.net we have to follow a few steps:
1. Create a table in SQL Server:
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[page_content]( [page_id] [int] IDENTITY(1,1) NOT NULL, [page_location_col] [int] NOT NULL, [page_name] [nvarchar](50) NOT NULL, page_url [nvarchar] (200) not null, [page_content] [nvarchar](max) NOT NULL, [enable] [int] NOT NULL, [page_creation_date] [datetime] NULL, CONSTRAINT [PK_page_content] PRIMARY KEY CLUSTERED ( [page_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[page_content] ADD CONSTRAINT [DF_page_content_page_creation_date] DEFAULT (getdate()) FOR [page_creation_date] GO
2. Create a master page or a template page(Design page, except them content):
<%@ Page Title="" Language="C#" MasterPageFile="~/Front.master" AutoEventWireup="true" CodeFile="Template.aspx.cs" Inherits="Template" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <div class="row"> <div class="col-sm-12"> <h3 id="Template1" runat="server"> </h3> <hr /> </div> </div> <div class="row"> <div class="col-sm-12"> <div id="Template2" runat="server"> </div> </div> </div> </asp:Content>
Template Page Code:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Text; using System.Media; using System.Data.SqlClient; using System.Data; using System.Configuration; public partial class Template : System.Web.UI.Page { String strconn = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { SqlConnection con = new SqlConnection(strconn); con.Open(); string str = "select page_name,page_content from page_content where page_name='Template'"; SqlCommand cmd = new SqlCommand(str, con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); Template1.InnerHtml = dt.Rows[0]["page_name"].ToString(); Template2.InnerHtml = dt.Rows[0]["page_content"].ToString(); con.Close(); } }
3. Then create dynamic page using template page.
<table align="left" style="font-family:Calibri;font-size:14px"> <tr> <td colspan="2" align="left"> <h2>Manage Your Profile</h2> </td> </tr> <tr> <td>Column Number:</td> <td><asp:DropDownList ID="colno" runat="server"> <asp:ListItem Text="1" Value="1"></asp:ListItem> <asp:ListItem Text="2" Value="2"></asp:ListItem> <asp:ListItem Text="3" Value="3"></asp:ListItem> </asp:DropDownList></td> </tr> <tr> <td>Page Name:</td> <td><asp:TextBox ID="page_name" runat="server" OnTextChanged="page_name_TextChanged" AutoPostBack="true"></asp:TextBox></td> </tr> <tr> <td>Page URL</td> <td> <asp:TextBox ID="page_url" runat="server" Enabled="false"></asp:TextBox> </td> </tr> <tr> <td colspan="2"> <asp:Button ID="Create_Page" Text="Create Page" runat="server" OnClick="Create_Page_Click" /> </td> </tr> </table>
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Text; using System.Media; using System.Data.SqlClient; using System.Data; using System.Configuration; public partial class Admin_Page_Creation : System.Web.UI.Page { String strconn = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { } protected void page_name_TextChanged(object sender, EventArgs e) { page_url.Text = page_name.Text + ".aspx"; } protected void Create_Page_Click(object sender, EventArgs e) { File.Copy(Server.MapPath("~/") + "Template.aspx", (Server.MapPath("~/") + "" + page_name.Text + ".aspx")); File.Copy(Server.MapPath("~/") + "Template.aspx.cs", (Server.MapPath("~/") + "" + page_name.Text + ".aspx.cs")); StreamReader sr3 = new StreamReader(Server.MapPath("~/") + "" + page_name.Text + ".aspx"); string fileContent3 = sr3.ReadToEnd(); sr3.Close(); using (StreamWriter Sw3 = new StreamWriter(Server.MapPath("~/") + "" + page_name.Text + ".aspx")) { fileContent3 = fileContent3.Replace("Template", page_name.Text); Sw3.WriteLine(fileContent3); Sw3.Flush(); Sw3.Close(); } //.aspx.cs Page StreamReader sr1 = new StreamReader(Server.MapPath("~/") + "" + page_name.Text + ".aspx.cs"); string fileContent1 = sr1.ReadToEnd(); sr1.Close(); using (StreamWriter Sw1 = new StreamWriter(Server.MapPath("~/") + "" + page_name.Text + ".aspx.cs")) { fileContent1 = fileContent1.Replace("Template", page_name.Text); Sw1.WriteLine(fileContent1); Sw1.Flush(); Sw1.Close(); } SqlConnection con = new SqlConnection(strconn); con.Open(); string str1 = "insert into page_content(page_location_col,page_name,page_content,page_url,enable) values('"+colno.SelectedItem.Text+"','"+page_name.Text+"','No Text','"+page_url.Text+"','1')"; SqlCommand cmd = new SqlCommand(str1, con); cmd.ExecuteNonQuery(); con.Close(); ScriptManager.RegisterStartupScript(this, this.GetType(), "StartUpScript3", "alert('Page Created Successfully, Add Content Now.')", true); } }