3

Visual Studio 2005 で作成された従来の Web プロジェクトがあり、最近 Visual Studio 2010 にアップグレードされました。.net 2.0 に対してビルドされます。

次のようなフラグメントを含むascxユーザーコントロールが含まれています

<select runat="server" id="foo">
    <option runat="server" id="bar" value="1">1</option>
</select>

元のデザイナー コードは次のようになります。

protected global::System.Web.UI.WebControls.ListItem bar;

.ascx ファイル内の何かを編集するたびに (改行を追加しても)、デザイナーは自動的に次のように更新されます。

protected global::System.Web.UI.HtmlControls.HtmlGenericControl bar;

その時点で、ページが機能しなくなり、次のランタイム エラーが表示されます。

説明: この要求を処理するために必要なリソースの解析中にエラーが発生しました。次の特定の解析エラーの詳細を確認し、ソース ファイルを適切に変更してください。

パーサー エラー メッセージ: 基本クラスにはフィールド 'bar' が含まれていますが、その型 (System.Web.UI.HtmlControls.HtmlGenericControl) はコントロールの型 (System.Web.UI.WebControls.ListItem) と互換性がありません。

次に、ascx.designer.cs ファイルを手動で編集して、Visual Studio による損傷を修正する必要があります。

すべてのレガシー オプションの選択フラグメントを asp listcontrol オブジェクトに書き換える以外に、ビジュアル スタジオがデザイナー ファイルを食べないようにするにはどうすればよいですか?

4

2 に答える 2

1

私も同じ問題を抱えていました。ASP.net プロジェクトの一部を変更した後、この問題に到達しました。

The base class includes the field 'Option1', 
but its type (System.Web.UI.HtmlControls.HtmlGenericControl) is not compatible 
with the type of control (System.Web.UI.WebControls.ListItem).

この問題を解決するために、このファイルを変更し、<MyFileName>.aspx.designer.cs検索Option1して置き換えました

protected global::System.Web.UI.HtmlControls.HtmlGenericControl.ListItem Option1;

protected global::System.Web.UI.WebControls.ListItem Option1;

最後に、私は自分のソリューションを構築し、問題は解決しました。

于 2016-09-20T19:33:05.287 に答える
0

HTML が正しくありません。

<option>は の子ですが、の子として<select>持っています。これは誤りです。<select><option>

そのはず:

<select runat="server" id="foo">
    <option runat="server" id="bar" value="1">1</option>
</select>

このtitle=""属性は<option>要素に影響を与えないことに注意してください。

于 2012-09-24T18:15:11.177 に答える