我知道错误是由<%# 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" />
答案 0 :(得分:3)
您需要像使用NodeAliasPath
属性一样在 databind标记内构建字符串:
WhereCondition='<%# "DocumentMenuItemHideInNavigation='false' AND NodeParentID=" + Eval("NodeID") + " AND NodeLevel=3" %>'
如果您遇到混合'
和"
字符的问题,您可能希望将构建表达式的逻辑移动到页面中的函数中:
public string GetWhereCondition(SomeType dataItem) {
return "..." + dataItem.NodeID + "...";
}
您的代码更改为:
WhereCondition="<%# GetWhereCondition(Container.DataItem) %>"
免责声明:功能和类型名称仅作为示例组成 - 请使用适当命名的函数并替换名称不详的函数。