Eval方法不会在回发后保存结果

时间:2017-11-09 15:22:14

标签: .net webforms web-controls

我试图修复WEB FORMS(.Net 4)上遗留项目中的错误。 我在Layout.master(页面布局)中有一些使用如下控件的逻辑:

<uc4:FooterCharity ID="NewsItemUserControl1" DataSource="<%#Container.DataItem %>" runat="server" />

并且此控件使用Eval(),如下所示:

<li class="footer__sponsor-item carousel-block">
    <a href="/sponsory/<%# Eval("PathInfo")%>/">
        <img src="<%# Eval("Image")%>" style="width: 198px; height: 148px;"/>
    </a>
</li>

在页面上我使用了一些其他发送回发的控件(提交按钮)。

重新加载页面后,所有渲染控件都有相同的html,但没有Eval()功能的结果

回发前的

html:

<li class="footer__sponsor-item carousel-block">
    <a href="/sponsory/rossijskaja-futbolnaja-premier-liga/">
        <img src="/img/Sponsors/rfpl.png" style="width: 198px; height: 148px;">
    </a>
</li>
回发后的

html:

<li class="footer__sponsor-item carousel-block">
    <a href="/sponsory//">
        <img src="" style="width: 198px; height: 148px;">
    </a>
</li>

我该如何解决这个问题?

我可以用其他html保存Eval()的结果还是可以重新渲染它?

UPD : 控制数据来自:

<asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1" EnableModelValidation="true">
                                    <LayoutTemplate>
                                        <ul class='footer__sponsor-list'>
                                            <li runat="server" id="itemPlaceholder" class="footer__sponsor-item" />
                                        </ul>
                                    </LayoutTemplate>
                                    <ItemTemplate>
                                    <uc4:FooterCharity ID="NewsItemUserControl1" DataSource="<%#Container.DataItem %>" runat="server" />
                                </ItemTemplate>
                                <AlternatingItemTemplate>
                                    <uc4:FooterCharity ID="NewsItemUserControl1" DataSource="<%#Container.DataItem %>" runat="server" />
                                </AlternatingItemTemplate>
                            </asp:ListView>
...
 <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="LigaStavokShops.DataAccessObject.SponsorMapper" SelectMethod="GetSponsors"></asp:ObjectDataSource>

如果我放断点,我看到它调用一次 - 在第一页加载时,但不是在回发后(渲染控件和GetSponsors)

UPD2 : 发布数据:

 <asp:Button ID="SubmitVacancyFormImageButton" class="questionary___submit" CausesValidation="true" Text="Отправить анкету" runat="server" OnClick="SubmitVacancyFormImageButton_Click" />

1 个答案:

答案 0 :(得分:1)

好的,我解决的问题是在页面加载时调用 ListView.DataBind

 {indexname':'xw_qk', 'search':'IELEP0229/(F_ReqNum)*2018/(F_YEAR)',
 'page':'0', 'pagenum':'20', 'sort':'', 'type':'content}

和扩展类是:

<Canvas x:Name="mainCanvas" ManipulationMode="None" Margin="0,12,0,0" MinHeight="400">
     <Border x:Name="manipulateMe" Background="LightGray" Height="200" Width="200"  ManipulationMode="All"/>
</Canvas>