2017-11-09 10 views
0

私はWEB FORMS(.Net 4)のレガシープロジェクトでバグを修正しようとしています。このようなEvalメソッドはポストバック後に結果を保存しません

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

と、この制御用評価(): 私は(ページのレイアウト)は、このようなものを使用制御Layout.masterでいくつかのロジックを持っている

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

、ページ上で私が使用してポストバック(送信ボタン)を送信する他のコントロール

評価の結果()

HTMLポストバック前機能なし

リロードページの後、すべてのレンダリングコントロールと同じ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> 

この問題を解決するにはどうすればよいですか?

Eval()の結果を他のhtmlで保存できますか、それとも再レンダリングできますか?

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" /> 
+0

データとそのコントロールを移入された何?その操作はその特定のポストバックに対して実行されていませんか? – David

+0

"コントロールにデータを設定するのは何ですか?" - 少数のテキストフィールドとユーザーからのファイル –

+0

あなたはより具体的になることができますか?コードでは、どのようにデータがそのコントロールに適用されますか?ポストバックでも同じ操作が行われますか? 'DataSource =" <%#Container.DataItem%> "'はデータをどこに取得しますか? – David

答えて

1

私は、問題の解決は、[OK]は、ページのロードにListView.DataBindを呼び出すことです:

<body> 
    <%= ListView1.DataReBind()%> 

と拡張クラスは次のとおりです。

public static class ObjectDataSourceHelper 
    { 
     public static string DataReBind(this ListView lv) 
     { 
      lv.DataBind(); 
      return string.Empty; 
     } 
    } 
関連する問題