C# 将导航url动态设置为超链接

C# 将导航url动态设置为超链接,c#,asp.net,C#,Asp.net,我正在尝试将导航url设置为gridview中的超链接 我在gridview中使用后端c#代码中的文字创建表 代码现在看起来像是在GridviewRowDataBound(对象发送者,GridViewRowEventArgs e)中 Literal.Text+=“联系人”; 我想在此代码中设置导航 如果有人有主意,那会很有帮助 谢谢您应该只创建一个超链接控件,而不是尝试将其添加到文本中: HyperLink lnk = new HyperLink(); lnk.Text = "Hello Wo

我正在尝试将导航url设置为gridview中的超链接

我在gridview中使用后端c#代码中的文字创建表

代码现在看起来像是在GridviewRowDataBound(对象发送者,GridViewRowEventArgs e)中

Literal.Text+=“联系人”;
我想在此代码中设置导航

如果有人有主意,那会很有帮助


谢谢

您应该只创建一个超链接控件,而不是尝试将其添加到文本中:

HyperLink lnk = new HyperLink();
lnk.Text = "Hello World!";
lnk.NavigateUrl = "~/somefolder/somepage.aspx";

e.Row.Cells[0].Controls.Add(lnk);
如果您的方法可行,您可以尝试以下方法:

Literal.Text += String.Format("<asp:HyperLink ID=\"hlContact\" runat=\"server\" NavigateUrl=\"{0}\">Contact</asp:HyperLink>", navigationUrl); 
Literal.Text+=String.Format(“,导航URL”);

如果您只是尝试将GridView中的超链接字段与绑定字段进行数据绑定,则可以使用TemplateField。下面是一个例子,可以在前面完成,而不是在后面的代码中添加

<asp:TemplateField HeaderText="Contact" SortExpression="LastName, FirstName">
    <ItemTemplate>
        <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# String.Format("~/Page.aspx?ID={0}", Eval("CustID").ToString()) %>'>Contact</asp:HyperLink>)
    </ItemTemplate>
</asp:TemplateField>

(联系方式)

当我们将
html
内容写入
literal
时,它不会正确拾取
asp超链接。但是当我使用普通的
“a”
标记时,它正确地选择了重定向路径

literal.Text += "a ID='linkcontact' runat='server' href='" + "www.website./pagename.aspx?ID=" + id + "'>contact</a>";
literal.Text+=“a ID='linkcontact'runat='server'href=”+“www.website./pagename.aspx?ID=“+ID+””>contact”;

用于生成菜单和子菜单代码c。使用变量和navigateurl是下一种形式

    <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                <Items>                      
                    <asp:MenuItem>
                       <asp:MenuItem></asp:MenuItem>
                       <asp:MenuItem></asp:MenuItem>
                    </asp:MenuItem>

                </Items>
            </asp:Menu>

    NavigationMenu.Items[0].Text = "xxxxxx"; name of menu
    MenuItem menu = NavigationMenu.Items[0];
    MenuItem submenu = new MenuItem("xxxxxx"); //name of submenu
    submenu.NavigateUrl = "~/Main/xxxxx.aspx?id=" + id + "";

    MenuItem submenu1 = new MenuItem("xxxxxxx");//name of sumbenu1
    submenu1.NavigateUrl = "~/Main/xxxxxxx.aspx?id=" + id + "";

    menu.ChildItems.Add(submenu);
    menu.ChildItems.Add(submenu1);

NavigationMenu.Items[0]。Text=“xxxxxx”;菜单名
MenuItem menu=NavigationMenu.Items[0];
菜单项子菜单=新菜单项(“xxxxxx”)//子菜单名称
submenu.NavigateUrl=“~/Main/xxxxx.aspx?id=“+id+”;
菜单项子菜单1=新菜单项(“xxxxxxx”)//sumbenu1的名称
子菜单1.NavigateUrl=“~/Main/xxxxxxx.aspx?id=“+id+”;
菜单.ChildItems.Add(子菜单);
menu.ChildItems.Add(子菜单1);

也许我误解了问题或上下文,但这不会简单地呈现“@Mikemane:这也是我的想法,因此我的第一个建议是在某种父容器中添加一个超链接控件。这只会呈现文本”似乎你走了另一个方向!这与创建带有导航的菜单无关。这是
网格视图
列中的链接+一些其他信息,其中数据被附加到
文本
。看来你今天加入了这个网站。感谢你的贡献。但是看看那些没有任何公认答案的问题。如果答案被接受,您将看到答案左侧的复选标记!
literal.Text += "a ID='linkcontact' runat='server' href='" + "www.website./pagename.aspx?ID=" + id + "'>contact</a>";
    <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                <Items>                      
                    <asp:MenuItem>
                       <asp:MenuItem></asp:MenuItem>
                       <asp:MenuItem></asp:MenuItem>
                    </asp:MenuItem>

                </Items>
            </asp:Menu>

    NavigationMenu.Items[0].Text = "xxxxxx"; name of menu
    MenuItem menu = NavigationMenu.Items[0];
    MenuItem submenu = new MenuItem("xxxxxx"); //name of submenu
    submenu.NavigateUrl = "~/Main/xxxxx.aspx?id=" + id + "";

    MenuItem submenu1 = new MenuItem("xxxxxxx");//name of sumbenu1
    submenu1.NavigateUrl = "~/Main/xxxxxxx.aspx?id=" + id + "";

    menu.ChildItems.Add(submenu);
    menu.ChildItems.Add(submenu1);