次のようなリピーターで Eval を使用する ascx があります。
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="Similar.ascx.vb" Inherits="x.y.z.Similar" %>
<asp:repeater runat="server" id="rptAlternatives" visible="false" Enableviewstate="false">
<HeaderTemplate>
<section id="similar" class="sidelist sideModule">
<h3>Possible Alternatives:</h3>
<ul class="sideborder">
</HeaderTemplate>
<ItemTemplate>
<li>
<a href="/bar/<%# Eval("URL")%>" class="box">foo</a>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</section>
</FooterTemplate>
</asp:repeater>
これは私の開発用 PC では問題なく動作しますが、ライブ サーバーに展開すると失敗して、次のように言わCompiler Error Message: BC30451: 'Eval' is not declared. It may be inaccessible due to its protection level.
れます。また、を使用するすべてのページで壊れているわけではありませんEval
。
ローカル環境は IIS 7.5.7600.16385 で、アプリケーション プールは ASP.NET v4.0 Classic を実行しています。サーバー環境は同じです。自分のマシンで VS から公開し、これをライブ サーバーにコピーしてデプロイします。
この展開の前に、ライブ サイトは v2.0 を使用していました。サイトを v4.0 にアップグレードすることは、リリースしようとしている変更の一部です。このコードは、このリリースの一部として変更されていません。常に Eval を使用しており、これは常に問題ありません。
Visual Studio 11 ベータ版をインストールしましたが、このプロジェクトでは 2010 を使用しています。
これを引き起こしている可能性のあるアイデアはありますか?
編集:
この専門家の交換投稿は、まったく同じ動作を説明しているようです。彼らは、ascx ファイルと ascx.vb ファイルの両方でクラスの名前を変更することで、この問題を「修正」しました。それらは変更前と変更後に一致しましたが、変更により明らかにコンパイラが何かを動かしました。これを試してみるかもしれませんが、特定の ascx が機能しなくなるだけでは満足できないようです。
に変更することを提案する投稿もたくさん見つかりましたDataBinder.Eval(Container.DataItem, "URL")
。ただし、コードが以前は機能していて突然停止した場合、これを行うのは気が進まない. これは、私が使いたくない魔法のランダムな「修正」です。