2009-12-27 36 views
4

我想在显示它之前检查xml。我使用的是XPath而不是xsl。对于例如在显示之前检查空的XML数据验证

<title></title> 
<url></url> 
<submit></submit> 

我想检查一下,如果xml数据不存在。然后不要显示它。因为我把这些值在<a href=<%#container.dataitem,url%>>new link</a>. 所以我想,如果URL为空,那么不要显示新的链接,否则显示它和类似的标题,如果标题不是空的显示它,否则不显示它。

主要的问题是,我可以在ascx.cs文件检查像 if(iterator.current.value="")不显示,但问题是在ASCX文件IM安宁

<a href="">new link</a> 

我想,新链接不应该来,如果网址是空... 任何想法如何检查这种情况?

回答

0

我见过这个处理使用asp:Literal控件。

在Web表单,你必须<asp:Literal id='literal' runat='server' text='<%# GetAnchorTag(container.dataitem) %>' />

而且在后面的代码,你必须:

protected string GetAnchorTag(object dataItem) { 
    if(dataItem != null) { 
    string url = Convert.ToString(DataBinder.Eval(dataItem, "url")); 
    if(!string.IsNullOrEmpty(url)) { 
     string anchor = /* build your anchor tag */ 
     return anchor; 
    } 
    } 
    return string.Empty; 
} 

这种方式,你要么输出一个完整的定位标记或空字符串。我不知道这将如何适合您的标题和提交节点,但它解决了锚点显示问题。

就我个人而言,我不喜欢这种方法,但我已经看到它很多。

+1

这对我工作....我试着类似这样,它完美再次感谢吉姆......... :-) – 2009-12-30 00:55:23

0

使用XPath。假设元素包含在一个名为link元素:

link[title != '' and url !=''] 

会发现你的link元素,其titleurl子元素不包含后代文本节点。为了让多一点防弹,

link[normalize-space(title) != '' and normalize-space(url) !=''] 

将保持表情从匹配link元件,其titleurl儿童包含空格。

+0

我知道我能找到这样的。在我的情况下,我发现它使用iterator.current.value =“”或不,但我的问题是如何基于我的超链接。我的意思是如果它是空白不显示链接,如果它不是空白,然后显示链接。我的表达链接是在ascx文件中,如上所述。 – 2009-12-27 18:55:26

+0

我认为罗伯特所建议的是忽略没有指定url的所有节点。您不清楚如何使用标题并在您的帖子中提交。 – 2009-12-28 02:05:40

0

如果您无法访问.cs文件,那么您仍然可以将代码正确地嵌入.ascx文件中。请记住,您不必将所有代码放在代码背后,它可以直接在.ascx文件中内联。

<% 
if(iterator.current.value!="") { 
%> 
    <a href=<%#container.dataitem,url%>>new link</a> 
<% 
} 
%>