Search code examples
asp.neturl-routing

how do you set a url routing routevalue to a hyperlink's navigate url property in an aspx page?


If the following routes:

 routes.MapPageRoute(
           "Build",      // Route name
           "build",      // Route URL
           "~/build.aspx" // Web page to handle route
        );

     routes.MapPageRoute(
       "Type",      // Route name
       "build/{type}",      // Route URL
       "~/build.aspx" // Web page to handle route
    );

       routes.MapPageRoute(
       "Project",      // Route name
       "build/{type}/{project}",      // Route URL
       "~/build.aspx" // Web page to handle route
    );

 routes.MapPageRoute(
       "Task",      // Route name
       "task/{type}/{project}",      // Route URL
       "~/task.aspx" // Web page to handle route
    );

How do I set a hyperlinks navigate url in the .aspx (not code behind) to the route named 'task' where type = 'tool' and project = 'excel'?


Solution

  • For example, in a grid view template field:

      <asp:TemplateField>
        <ItemTemplate>
          <asp:HyperLink runat="server" ID="btnUp" Text='<%# Eval("ProjectID") %>'
            NavigateUrl='<%# GetRouteUrl("Task",
              new System.Web.Routing.RouteValueDictionary
              {
                {"type", "tool" },
                {"project" , "excel" }
              }) %>' />
        </ItemTemplate>
      </asp:TemplateField>
    

    or, you can set parameters from data source:

      <asp:TemplateField>
        <ItemTemplate>
          <asp:HyperLink runat="server" ID="btnUp" Text='<%# Eval("ProjectID") %>'
            NavigateUrl='<%# GetRouteUrl("Task",
              new System.Web.Routing.RouteValueDictionary
              {
                {"type", Eval("Type") },
                {"project" , Eval("ProjectType") }
              }) %>' />
        </ItemTemplate>
      </asp:TemplateField>