c# ASP.NET Webforms:使用动态 href 动态创建锚元素

c# ASP.NET Webforms: Dynamically creating anchor elements with dynamic hrefs

我正在使用 VS 2019C# 4.8ASP.NET WebForms。我有一个用作列表的页面。每行都有一个公司名称,当用户点击它时,我想在另一个页面顶部并将该公司的 ID 作为参数传递。或者有没有更好的 SEO 友好的方法?

下面是我遇到问题的代码截图:

  1. 如您所见,我试图将公司 ID 作为参数 (url) 传递到 url,但失败了,如下一个屏幕截图所示:

  1. 如果我将行号和公司名称放在锚标记的文本区域中,它将无法编译,如下所示:

正确的做法是什么?

除非你在数据绑定控件中,否则你不能使用

'<% Public 表格方法在这里 %>'

以上方法无效。您可以在不基于服务器的标记和控件中使用上述表达式(因此,您可以删除 runat="Server".)。那么有服务器控件吗?

那些<% %>表达式不能用!

当然如果我们在里面说任何数据绑定控件?那么当然,您可以使用“#”符号,表示“在”数据绑定期间。

所以,如果这是在 listview/gridview/details 视图等方面说的?那项是数据绑定的?

那么您可以在标记中使用这种格式:

'<%# Eval("column name from data source") %>'

'<%# Eval("HotelName") %>'

'<%# Eval("itm.Co_ID") %>'

但以上假定这些控件在数据库控件中(gridview/listview 等)。

因此,假设 itm.Co_ID 是该 Web 表单的 PUBLIC 成员是合法的。

<h2>'<%= itm.Co_ID %>'</h2>

在上面,itm.Co_ID 必须是给定网页的 public method/function。

但是,如果您尝试这样做,那么它将不起作用:

<h2 id="mybigtitle" runat="server" >'<%= itm.Co_ID %>'</h2>

因此此类表达式仅适用于非服务器控件(没有 runat="server')。

但是,我们可以在代码中对“mybigtitle”执行数据绑定,因此我们可以使用:

<h2 id="mybigtitle" runat="server" >'<%# Eval("itm.Co_ID") %>'</h2>

但是,在后面的代码中我们需要一个

 mybigitle.dataBind()

并且 item.Co_ID 必须是一个可解析的变量,class 或 public 网页的方法或函数才能起作用。

但是,您可能已经在创建和吐出数据的列表视图或某些数据绑定控件中 - 没有该标记或不知道您发布的标记属于哪种对象 - 那么它不清楚如果您可以使用“#”作为数据绑定表达式,例如

'<%# Eval("legal function etc. goes here") %>'

在不知道您的标记是否是数据绑定(可用)控件的结果的情况下,我们必须在这里猜测一下什么会起作用。