Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 中继器控制中的If语句_Asp.net_Repeater - Fatal编程技术网

Asp.net 中继器控制中的If语句

Asp.net 中继器控制中的If语句,asp.net,repeater,Asp.net,Repeater,所以,取决于转发器项目是否有链接,我想在图像周围使用链接,否则我只想输出链接 现在我有 <asp:Repeater ID="BannerImageRepeater" runat="server"> <ItemTemplate> <a href="<%# ((BannerImage)Container.DataItem).CallToActionUrl %>"><img src="<%# ((BannerImage

所以,取决于转发器项目是否有链接,我想在图像周围使用链接,否则我只想输出链接

现在我有

<asp:Repeater ID="BannerImageRepeater" runat="server">
    <ItemTemplate>
        <a href="<%# ((BannerImage)Container.DataItem).CallToActionUrl %>"><img src="<%# ((BannerImage)Container.DataItem).ImageUrl %>?w=980&h=600" alt="<%# ((BannerImage)Container.DataItem).AltText %>"/></a>
    </ItemTemplate>
</asp:Repeater>   

所以我想添加一些类似于

String.IsNullOrEmpty(((BannerImage)Container.DataItem).CallToActionUrl)

<img src="">
else
<a href=''><img src=""></a>
String.IsNullOrEmpty(((BannerImage)Container.DataItem.CallToActionUrl)
其他的

创建两个控件,一个作为链接,另一个作为图像控件。然后使用代码隐藏来切换它们的可见性。一个不可见的asp.net控件根本不会被渲染,所以您应该可以。更改此项:

<asp:Repeater ID="BannerImageRepeater" runat="server">
        <ItemTemplate>
            <a href="<%# ((BannerImage)Container.DataItem).CallToActionUrl %>"><img src="<%# ((BannerImage)Container.DataItem).ImageUrl %>?w=980&h=600" alt="<%# ((BannerImage)Container.DataItem).AltText %>"/></a>
        </ItemTemplate>
    </asp:Repeater>   

为此:

<asp:Repeater ID="BannerImageRepeater" runat="server">
        <ItemTemplate>
            <asp:hyperlink id="yes_link" runat="server" NavigateUrl="<%# ((BannerImage)Container.DataItem).CallToActionUrl %>"><img src="<%# ((BannerImage)Container.DataItem).ImageUrl %>?w=980&h=600" alt="<%# ((BannerImage)Container.DataItem).AltText %>"/></asp:hyperlink>
            <asp:image id="no_link" runat="server" ImageUrl="<%# ((BannerImage)Container.DataItem).ImageUrl %>?w=980&h=600" alt="<%# ((BannerImage)Container.DataItem).AltText %>" />
        </ItemTemplate>
    </asp:Repeater> 

?w=980&h=600“alt=”“/>
如果您需要合并客户端javascript,请为每个控件分配一个CssClass,并在脚本中引用它。让我们知道它是如何运行的,祝您好运。


<asp:Repeater ID="BannerImageRepeater" runat="server">
    <ItemTemplate>
    <% if(String.IsNullOrEmpty(((BannerImage)Container.DataItem).CallToActionUrl)) { %>
<img src="<%# ((BannerImage)Container.DataItem).ImageUrl %>?w=980&h=600" alt="<%# ((BannerImage)Container.DataItem).AltText %>"/>
<% } else { %>
        <a href="<%# ((BannerImage)Container.DataItem).CallToActionUrl %>"><img src="<%# ((BannerImage)Container.DataItem).ImageUrl %>?w=980&h=600" alt="<%# ((BannerImage)Container.DataItem).AltText %>"/></a>
<% } %>
    </ItemTemplate>
</asp:Repeater> 

我会采取不同的方法。此外,您可能可以在标记和代码隐藏中使用
Eval()
,而不是依赖于
容器.DataItem
,但我不遵循特定的属性名称

<asp:Repeater ID="BannerImageRepeater" runat="server">
    <ItemTemplate>
        <asp:PlaceHolder runat="server" Visible="<%# GetVisibleImage() %>">
        <a href="<%# ((BannerImage)Container.DataItem).CallToActionUrl %>">
            <img src="<%# ((BannerImage)Container.DataItem).ImageUrl %>
                ?w=980&h=600" alt="<%# ((BannerImage)Container.DataItem).AltText %>"/>
        </a>
        </asp:PlaceHolder>
        <asp:PlaceHolder runat="server" Visible="<%# GetVisibleNoImage() %>">
        <img src="<%# ((BannerImage)Container.DataItem).ImageUrl %>
                ?w=980&h=600" alt="<%# ((BannerImage)Container.DataItem).AltText %>"/>
        </asp:PlaceHolder>
    </ItemTemplate>
</asp:Repeater>

我已经编辑了你的标题。请看“”,其中的共识是“不,他们不应该”“。您愿意使用一些代码隐藏编码,还是希望在aspx页面上执行所有这些操作?我希望在aspx中执行这些操作,但我猜可能是因为不希望在if语句中出现错误,首先是我可以通过包含但随后是DataItem来修复的容器。它表示无法解析SYMBOL您也可以使用
控件指定
图像URL
,并用类似的服务器端代码连接每个属性的
可见属性。这与我的回答有什么不同?我不是在说你的答案或其他什么,我其实很想知道你在这里做了什么不同。我仍在开发我的第一个asp.net站点,因此我对新方法非常开放,等等。@Lopsided,您没有基于服务器端布尔计算切换可见性(
Visible=“
)。此外,您可以直接在
控件上指定
ImageUrl
属性。很好的一点。啊,现在我知道您在那里做了什么(顺便说一句,我是VB程序员),isnullorempty函数返回一个true或false,您可以使用标记来提取它。做得好,先生。不用担心。您应该可以用vb.net做同样的事情。我正在做越来越少的web表单开发,但它确实有它的位置。通常,我尝试避免UI/标记中的逻辑,而是使用此技术来获取代码/服务器端c计算/逻辑结果。
protected bool GetVisibleImage()
{
    return string.IsNullOrEmpty((string)Eval("CallToActionUrl"));
}

protected bool GetVisibleNoImage()
{
    return !string.IsNullOrEmpty((string)Eval("CallToActionUrl"));
}