0

我知道错误是由<%# Eval("NodeID")%>语句引起的。当我输入一个文字整数时,它工作正常。我尝试将 WhereCondition 的外部双引号更改为单引号,将内部引号更改为双引号,但这会引发异常。

<cms:CMSRepeater ID="subcatPreviewImages" Path= '<%# Eval("NodeAliasPath") + "/%" %>' runat="server" ClassNames="CMS.MenuItem" TransformationName="EcommerceSite.Transformations.EMCategorySmallImagePreview" OrderBy="NodeLevel, NodeOrder, NodeName" MaxRelativeLevel="4" WhereCondition="DocumentMenuItemHideInNavigation='false' AND NodeParentID= <%# Eval("NodeID")%> AND NodeLevel=3" />
4

1 回答 1

3

您需要像使用属性一样在 databind 标记内构建字符串:NodeAliasPath

WhereCondition='<%# "DocumentMenuItemHideInNavigation='false' AND NodeParentID=" + Eval("NodeID") + " AND NodeLevel=3" %>'

'如果您在使用混合字符和字符时遇到问题",您可能希望将构建表达式的逻辑移动到页面中的函数中:

public string GetWhereCondition(SomeType dataItem) {
    return "..." + dataItem.NodeID + "...";
}

您的标签更改为:

WhereCondition="<%# GetWhereCondition(Container.DataItem) %>"

免责声明:函数和类型名称仅作为示例组成——请使用适当命名的函数并替换我命名不佳的函数。

于 2013-04-18T21:13:11.620 回答