Click here to Skip to main content
15,889,909 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi,

This below code snippet working with SQL query i wrote in code behind.
XML
<asp:HyperLink ID="HyperLink2" runat="server" ToolTip='<%#DataBinder.Eval(Container.DataItem,"Category")%>'

    NavigateUrl='<%#DataBinder.Eval(Container,"DataItem.id" , "./Default.aspx?id={0}")%>'>
    <%#DataBinder.Eval(Container,"DataItem.Category")%>

    (<%#DataBinder.Eval(Container,"DataItem.cnt")%>)</asp:HyperLink>

But if i am using routing with the same SQL Query it is not working data is not showing.
XML
<asp:HyperLink runat="server" ID="lnkProduct"
               NavigateUrl='<%# Helpers.FormatProductUrl(Eval("Category").ToString()) %>' Text='<%# Eval("Category") %>'>
               </asp:HyperLink>

code behind SQL Query:
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            con.Open();

            SqlCommand cmd = new SqlCommand("SELECT id, category, ( SELECT COUNT(id) FROM Entry_tbl WHERE category_tbl.id = Entry_tbl.cat_id) as cnt FROM category_tbl", con);

            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);
            RepDetails.DataSource = ds;

            RepDetails.DataBind();

            con.Close();      
        }
}

global.asax

C#
void Session_Start(object sender, EventArgs e)
{

    RegisterRoutes(RouteTable.Routes);
}

void RegisterRoutes(RouteCollection routes)
{
    string pathAndQuery = Request.Url.PathAndQuery.ToString().ToLower();

    routes.Add(
        "Blogcat",
        new Route("{Category}", new PostRouteHandler())

    );

helper.cs
C#
public class Helpers
{

    public static string FormatProductUrl(string Category)
    {
        return RouteTable.Routes.GetVirtualPath(null, "Blogcat", new RouteValueDictionary { { "Category", Category } }).VirtualPath;
    }


    public static IHttpHandler GetNotFoundHttpHandler()
    {
        return BuildManager.CreateInstanceFromVirtualPath("~/NotFound.aspx", typeof(Page)) as Page;
    }
}

PostRouteHandler.cs

C#
public class PostRouteHandler : IRouteHandler
{

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        string Category = requestContext.RouteData.Values["Category"] as string;


        if (string.IsNullOrEmpty(Category))
            return Helpers.GetNotFoundHttpHandler();
        else
        {

            if (Category == null)
                return Helpers.GetNotFoundHttpHandler();
            else
            {


                HttpContext.Current.Server.UrlEncode(Category);


                return BuildManager.CreateInstanceFromVirtualPath("~/Default.aspx", typeof(Page)) as Page;
            }
        }
    }


}
Posted
Comments
[no name] 8-Jun-15 10:11am    
why do you have RegisterRoutes in Session_Start?

I think correct place should be in Application_Start in global.asax file.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900