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);
}
}

