2

私はしばらくの間、これに頭を悩ませてきました。ascxユーザーコントロールでインテリセンスを動作させることができないようですが、普通の古いaspxでは正常に動作します。

サンプルの aspx ページを次に示します。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestScriptLoader._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="scriptManager" ScriptMode="Debug" runat="server" >
        <Scripts>
            <asp:ScriptReference Path="http://ajax.microsoft.com/ajax/beta/0910/Start.js" ScriptMode="Inherit" />
        </Scripts>
    </asp:ScriptManager>

    </form>
    <script type="text/javascript">

    </script>
</body>
</html>

JavaScript インテリセンス (CTR + SHIFT + J) を更新すると、そこのスクリプト タグで MicrosoftAjax のインテリセンスを取得します。

ascxファイルで

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Test.ascx.cs" Inherits="TestScriptLoader.Test" %>

<asp:ScriptManagerProxy ID="scriptManagerProxy" runat="server">
    <Scripts>
        <asp:ScriptReference Path="http://ajax.microsoft.com/ajax/beta/0910/Start.js" ScriptMode="Inherit" />
    </Scripts>
</asp:ScriptManagerProxy>

<script type="text/javascript">

</script>

私はそのような喜びを得ません。

私が考えることができる唯一のことは、別のJSファイルでユーザーコントロールのすべてのコーディングを行うことですが、特定のユーザーコントロールで必要な機能と、それらのために作成するJavaScriptへの1対1のマッピングがあり、ユーザー コントロールはページに 1 回だけ表示されます。基本的に、絶対に必要でない限り、この道をたどりたくありません。

編集

また、これらのコントロールにサービス参照を追加し、IntelliSense を利用できるようにする必要もあります。

編集

私が直面している問題は、ユーザーコントロール内で scriptmanagerproxy を使用していることです。ユーザーコントロールには、関連付ける ScriptManager を知る方法がないため、javascript インテリセンスが更新されていません。

これは、scriptmanagerproxy を scriptmanager コントロールに変更することで確認できます。IntelliSense は、スクリプトとサービスの両方の参照に対して機能します。

編集

<asp:ScriptManager>また、ページに を貼り付けて、ワニ口クリップで包むこともできると思いました。

<% if(false) { %>
    <asp:ScriptManager ID="fakeScriptManager" runat="server"/>
<% } %>


<asp:ScriptManagerProxy ID="scriptManagerProxy" runat="server">
    <Services>
        <asp:ServiceReference Path="~/path/to/your.svc" />
    </Services>
</asp:ScriptManagerProxy>

それは機能しているように見えましたが<% if(false) %>、コントロールの構築を妨げるものではありません...

これを実現する方法についてのアイデアはありますか?

4

2 に答える 2

1

これを ascx の先頭のどこかに追加してみてください (実際の jquery ファイルの場所を使用してください)

<% if (false) { %><script type="text/javascript" src="../../Scripts/jquery-

1.3.2.min.js"><% } %>

このブログ投稿の著者である Jouni Heikniemi の功績は次のとおりです

于 2009-11-11T14:21:20.560 に答える
0

この質問は死んでしまったので、ここに答えを入れます。

いいえ、できません。その理由は、scripmanagerproxy がどのスクリプト マネージャー コントロールを参照しているのかを Visual Studio が知る方法がないためです。そのため、スクリプト マネージャーは参照されませんしたがって、コントロールの編集中はインテリセンスを使用できません。

于 2010-02-05T03:26:01.950 に答える