我试图在WEB上修复遗留项目(.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>在页面上,我使用了发送回发(submit按钮)的其他控件。
在重新加载页面后,所有呈现的控件都有相同的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:Post data:
<asp:Button ID="SubmitVacancyFormImageButton" class="questionary___submit" CausesValidation="true" Text="Отправить анкету" runat="server" OnClick="SubmitVacancyFormImageButton_Click" />发布于 2017-11-10 09:11:06
好的,我的解决办法是在页面加载时调用ListView.DataBind:
<body>
<%= ListView1.DataReBind()%>扩展课程是:
public static class ObjectDataSourceHelper
{
public static string DataReBind(this ListView lv)
{
lv.DataBind();
return string.Empty;
}
}https://stackoverflow.com/questions/47205496
复制相似问题