Listview控件中的ASP.NET 4.0路径表达式构建器

时间:2010-03-11 19:20:40

标签: asp.net routing

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;

我能这样做吗?如果是的话,我应该怎么写呢。

感谢您的帮助!

2 个答案:

答案 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;
}