首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eval方法不会在回发后保存结果

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

Stack Overflow用户
提问于 2017-11-09 15:22:14
回答 1查看 90关注 0票数 0

我试图在WEB上修复遗留项目(.Net 4)中的错误。我在Layout.master (页面的布局)上有一些逻辑,它们使用这样的控制:

代码语言:javascript
复制
<uc4:FooterCharity ID="NewsItemUserControl1" DataSource="<%#Container.DataItem %>" runat="server" />

该控件使用Eval(),如下所示:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<li class="footer__sponsor-item carousel-block">
    <a href="/sponsory//">
        <img src="" style="width: 198px; height: 148px;">
    </a>
</li>

我怎样才能解决这个问题?

我可以用其他html保存Eval()的结果,或者可以重新呈现它吗?

UPD:用于控件的数据位于以下位置:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
 <asp:Button ID="SubmitVacancyFormImageButton" class="questionary___submit" CausesValidation="true" Text="Отправить анкету" runat="server" OnClick="SubmitVacancyFormImageButton_Click" />
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-10 09:11:06

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

代码语言:javascript
复制
<body>
    <%= ListView1.DataReBind()%>

扩展课程是:

代码语言:javascript
复制
public static class ObjectDataSourceHelper
    {
        public static string DataReBind(this ListView lv)
        {
            lv.DataBind();
            return string.Empty;
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47205496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档