ASP.NET 4.0的一个功能是“路由表达式”构建器,它允许您设置如下的超链接:
<asp:HyperLink
runat="server"
NavigateUrl="<%$ RouteUrl:RouteName=productos,categoria=Cereales,id=2 %>" >Productos</asp:HyperLink>
现在我想知道我是否可以在ListView控件中使用这种语法,我知道这是可能的,但是棘手的是我想要动态生成de route键值。 所以代替写id = 2我想写id =&lt;%#Eval(“CategoryID”)%&gt;
我能这样做吗?如果是的话,我应该怎么写呢。
感谢您的帮助!
答案 0 :(得分:0)
我搜索并搜索了一个示例,但没有找到在表达式构建器中处理构建路径的方法。我终于想出了一种在gridview中做到这一点的方法,也许你可以适应?请在以下地址查看我的帖子,我回答了自己的问题:How to use routing in web forms and HyperLinkFields of a GridView
我认为asp超链接控件不起作用,因为控件是在调用Eval()之前构建的,但是锚只是文本,因此它在模板字段中工作。
答案 1 :(得分:0)
不确定是否可以使用Route ExpressionBuilder执行此操作。相反,您可以在.aspx文件中为Hyperlink对象提供ID:
<asp:HyperLink ID="productHyperLink" runat="server">Productos</asp:HyperLink>
并在.cs文件的Page_Load方法中设置NavigateUrl属性:
protected void Page_Load(object sender, EventArgs e)
{
int categoryId;
string categoryName;
// Get categoryId and categoryName from database
RouteValueDictionary values = new RouteValueDictionary {
{ "id", categoryId.ToString() },
{ "categoria", categoryName } };
VirtualPathData virtualPathData = RouteTable.Routes.GetVirtualPath(null, "productos", values);
productHyperLink.NavigateUrl = virtualPathData.VirtualPath;
}