You should simply create a HyperLink control instead of trying to add it to a literal:
HyperLink lnk = new HyperLink(); lnk.Text = "Hello World!"; lnk.NavigateUrl = "~/somefolder/somepage.aspx"; e.Row.Cells[0].Controls.Add(lnk);
If your approach can work, you can try something like this:
Literal.Text += String.Format("<asp:HyperLink ID=\"hlContact\" runat=\"server\" NavigateUrl=\"{0}\">Contact</asp:HyperLink>", navigationUrl);
If you want to use Literal control, I would do something like this:
Literal.Text += String.Format("<a href=\"{0}\">Contact</a>", navigationUrl);
source share