动态地将导航网址设置为超链接

4

我正在尝试将导航URL设置为位于GridView中的超链接。

我正在使用后端C#代码在GridView中创建表格,并使用文字内容。

现在的代码看起来像这样GridviewRowDataBound(object sender, GridViewRowEventArgs e)。

Literal.Text += "<asp:HyperLink ID='hlContact' runat='server' NavigateUrl='#'>Contact </asp:HyperLink>";

我希望将导航设置在这段代码里。
如果有人有想法,将会很有帮助。
谢谢。

这只会在您的页面上呈现文本“<asp:HyperLink...”,而不是实际创建控件并将其添加到视图状态中。很遗憾,但这种方法永远不会起作用。 - Michael Jasper
4个回答

5

您应该创建一个HyperLink控件,而不是试图将其添加到文字中:

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 control),我建议您这样做:
Literal.Text += String.Format("<a href=\"{0}\">Contact</a>", navigationUrl); 

也许我误解了问题或上下文,但是那样做不会简单地将"<asp:Hyperlink..."渲染为发送回浏览器的响应吗?在什么时候,aspx页面将重新处理文字,以便"<asp:Hyperlink..."被渲染为"<a href=..."? - mikemanne
@mikemanne:这也是我的想法,因此我首先建议在某个父容器中添加HyperLink控件。 - James Johnson

3
如果您只是想在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>

1

当我们将html内容写入literal时,它无法正确获取asp超链接。但是当我使用普通的“a”标签时,它可以正确地获取重定向路径。

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

0

编写C#代码以创建菜单和子菜单,使用变量和导航URL的形式如下:

    <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);

1
似乎你走了另一条路!这不是关于创建带有导航菜单的内容。这是一个链接+其他信息,放在grid-view列中,数据被附加到literal中。看起来你今天刚加入这个网站。感谢你的贡献。但是请看看那些没有被接受的答案的问题。如果答案被接受,你会在答案左边看到一个勾号! - huMpty duMpty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接