URL Rewriting in ASP.NET with Sample Project

Posted by Joggee | ASP.NET Framework, ASP.NET Tips, ASp.NET 2005, Global.asax, URL Rewriting | Wednesday 11 June 2008 6:54 am

URL rewriting is the process of intercepting an incoming Web request and automatically redirecting it to a different URL.

To understand completely follow below link
http://msdn.microsoft.com/en-us/library/ms972974.aspx

In this article I am going make a simple example which will take only few minutes and you will learn how to achieve URL Rewriting.

I believe developer doesn’t have much time to read a complete article of 20 pages.

Here we go

Step 1
Create a table
(
POSTID INT
,
TITLE VARCHAR(255
),
BODY
TEXT
)

CREATE TABLE TESTTABLE

Insert some dummy values

INSERT INTO TESTTABLE (POSTID,TITLE,BODY) VALUES (1,‘ACCORDIAN CONTROL WITH SQL SERVER’,
‘ACCORDIAN CONTROL WITH SQL SERVER CONNECTIVITY JOGGEE
MADE A ARTICLE AND THAT IS THE BEST I THINK SO.’
)
GO
INSERT
INTO TESTTABLE (POSTID,TITLE,BODY) VALUES (2,‘Mouse over effect’
,
‘This is so simple and can found thousand places but I tried to make it more easier who
doesnt know the different between <asp:linked button> or anchor.’
)
GO

SELECT
* FROM
TESTTABLE

STEP – 2
Create a stored procedure
Create PROCEDURE PROC_TEST
AS

BEGIN
SELECT
‘<A HREF=Detail/’+REPLACE(TITLE,‘ ‘,‘_’) +‘~’ + CONVERT(VARCHAR,POSTID) + ‘.ASPX>’ + TITLE + ‘</A>’ AS ‘TITLE’
,
BODY
FROM
TESTTABLE
END

GO

Procedure for Detail Page.
CREATE PROCEDURE PROC_TESTDETAIL
@ID
INT
AS

BEGIN
SELECT
POSTID,
TITLE
,
BODY
FROM
TESTTABLE
WHERE POSTID =
@ID
END
GO

Database work is finished, let move to ASP.NET project means Website Programming.
Create a Website, Ajax Enabled or not its up to you, No matter what you choose.

In a default webpage write below code. I am pasting the complete code for Default page. where i am using DataList direct binding with two field. 

<@ Page Language=”VB” AutoEventWireup=”true” CodeFile=”Default.aspx.vb” Inherits=”_Default” %>

 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<
html xmlns
=”http://www.w3.org/1999/xhtml”>
<
head runat
=”server”>
<
title>BLOG.JOGGEE</title
>
</
head
>
<
body
>
<
form id=”form1″ runat
=”server”>
<
asp:ScriptManager ID=”ScriptManager1″ runat
=”server” />
<
div
>
<
asp:DataList ID=”DataList1″ runat
=”server”>
<
ItemTemplate
>
<
table width
=”100%”>
<
tr
>
<
td><%# Container.DataItem(“Title”)%></td
>
</
tr
>
<
tr
>
<
td><%#Container.DataItem(“Body”)%></td
>
</
tr
>
</
table
>
</
ItemTemplate
>
</
asp:DataList></div
>
</
form
>
</
body
>
</
html>   

In a Code Behind Past below code.

Imports System.Data
Imports System.Data.SqlClientPartial Class _Default
Inherits System.Web.UI.PageProtected
Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me

 

Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me

 

.Load
If IsPostBack = False
Then
Dim
sqlConn As New
SqlConnection
Dim sqlCmd As New SqlCommand(“PROC_TEST”
, sqlConn)
Dim objDA As New
SqlDataAdapter
Dim DT As New
DataTable
‘******************************************************************************************************
‘I have mentioned this connection string in the web.config Change it with appropriate values.
‘<add name=”connString” connectionString=”Data Source=”DATABASE SERVER NAME”;Initial Catalog=”DATABASE NAME”;User=”USER”;Password=”PASWORD”;”/>
‘****************************************************************************************************************
sqlConn.ConnectionString = ConfigurationManager.ConnectionStrings(“connString”
).ConnectionString
‘opening a connection
sqlConn.Open()
sqlCmd.Connection = sqlConn
sqlCmd.CommandType = CommandType.StoredProcedure
objDA.SelectCommand = sqlCmd
‘populate data table
objDA.Fill(DT)
‘bind data
DataList1.DataSource = DT.DefaultView
DataList1.DataBind()
‘disposing all the declared objects.
objDA.Dispose()
objDA =
Nothing
sqlConn.Close()
sqlConn =
Nothing
sqlCmd.Dispose()
sqlCmd.Connection.Close()
sqlCmd =
Nothing
End
If
End
Sub
End
Class  

Code for Detail WebPage. 

Create a folder named “Detail” and add one more Default.aspx webpage. Please follow the instructions.

<% @ Page Language=”VB” AutoEventWireup=”false” CodeFile=”Default.aspx.vb” Inherits=”Detail_Default” %>

<! DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<
html xmlns=”http://www.w3.org/1999/xhtml”
>
<
head runat
=”server”>
<
title>Blog.Joggee</title
>
</
head
>
<
body
>
<
form id=”form1
runat=”server”>
<
div
>
<
asp:HyperLink ID=”HyperLink1
runat=”server” NavigateUrl=”~/Default.aspx”>Back</asp:HyperLink>
<
table width
=”100%”>
<
tr
>
<
td
>
Title
</
td
>
<
td
>
<
asp:Label ID=”lblTitle” runat=”server”></asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td style=”height: 191px” valign
=”top”>
Body:
</
td
>
<
td style
=”height: 191px”>
<
asp:TextBox ID=”txtBody” runat=”server” Height=”188px” TextMode=”MultiLine” Width=”975px”></asp:TextBox
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
form
>
</
body
>
</
html

In a Code Behind Just Copy Paste
Imports
System.Data
Imports System.Data.SqlClient 

Partial Class Detail_Default
Inherits System.Web.UI.Page

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Not IsPostBack Then 

 Dim sqlConn As New SqlConnection

 Dim sqlCmd As New SqlCommand(“PROC_TESTDETAIL” , sqlConn)
Dim objDA As New SqlDataAdapter

 Dim DT As New DataTable

‘Here you can specify your connection string.

 sqlConn.ConnectionString = ConfigurationManager.ConnectionStrings(

“connString” ).ConnectionString

‘opening a connection

sqlConn.Open()

sqlCmd.Connection = sqlConnsqlCmd.CommandType = CommandType.StoredProcedure

sqlCmd.Parameters.Add(“@ID”, SqlDbType.Int).Value = Request.QueryString(“ID” )
objDA.SelectCommand = sqlCmd

‘populate data table

objDA.Fill(DT)

‘bind data

lblTitle.Text = DT.Rows(0)(“Title”

txtBody.Text = DT.Rows(0)(“Body”

‘disposing all the declared objects.

objDA.Dispose()

objDA =Nothing

sqlConn.Close()

sqlConn =Nothing 

sqlCmd.Dispose()

sqlCmd.Connection.Close() 

sqlCmd =Nothing

End If
End Sub
End Class


Add Global.asax file in the project on the root

<%@ Application Language=”VB” %>

 

<script runat=”server”>

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        ‘ Code that runs on application startup
    End Sub
    Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
        ‘ Code that runs on application shutdown
    End Sub
    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        ‘ Code that runs when an unhandled error occurs
    End Sub
    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ‘ Code that runs when a new session is started
    End Sub
    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ‘ Code that runs when a session ends.
‘ Note: The Session_End event is raised only when the
‘ sessionstate mode
‘ is set to InProc in the Web.config file. If session
‘mode is set to StateServer�
 ‘ or SQLServer, the event is not raised.
    End Sub

 Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim Old As String
    Dim MovingPath As String
    Dim IncomingURL As HttpContext
    Dim StartingIndex As Integer
    Dim ID As String
IncomingURL = HttpContext.Current
Old = IncomingURL.Request.Path
‘here you can filtered with if condition if you don’t
 want any directory to be caught and redirected some where
  If Regex.IsMatch(Old, “/Detail/”) Then
      Old = Old.Replace(“.ASPX”, “”)
      StartingIndex = Old.IndexOf(“~”)
      ID = Old.Remove(0, StartingIndex + 1)
      MovingPath = “~/Detail/Default.aspx?id=” + ID.ToString
      IncomingURL.RewritePath(MovingPath)
  End If
End Sub
</script>

In a web.config Add this key

<connectionStrings>
<
add name=connString connectionString=Data Source=DATABASE SERVER NAME;Initial Catalog=DATABASE NAME;User=USER;Password=PASWORD;/>
</
connectionStrings>

Detail Page

.

 

 

 

 

CLICK HERE TO DOWNLOAD THE COMPLETE SAMPLE PROJECT

Joggee

How to stop debugger in asp.net?

Posted by Joggee | ASP.NET Framework, ASP.NET Tips, ASp.NET 2005, Visual Studio ASP.NET | Tuesday 29 January 2008 8:27 am

You can stop debugger in asp.net using below code.

(VB.Net)

System.Diagnostics.Debugger.Break()