私はしばらくの間、これに頭を悩ませてきました。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) %>
、コントロールの構築を妨げるものではありません...
これを実現する方法についてのアイデアはありますか?