是否可以在用户控件中使用VS 2008 Javascript Intellisense?

时间:2009-11-09 22:57:35

标签: visual-studio-2008 ascx javascript-intellisense

我现在一直在反对这一点。我似乎无法在ascx用户控件中使用intellisense,但它在普通的旧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 intellisense(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中,我需要一对一的映射。它们,用户控件只会在页面中出现一次。基本上我不想走这条路,如果不是绝对必要的话。

修改

我还需要能够为这些控件添加服务引用,并且可以使用智能感知。

修改

让我感到震惊的是,我遇到的问题是我在usercontrol中使用了scriptmanagerproxy。 usercontrol无法知道要与哪个ScriptManager关联,因此这就是为什么javascript intellisense没有被更新。

我可以通过将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) %>并不妨碍控件的构建......

有关如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:1)

尝试将此添加到ascx顶部的某处(使用您的实际jquery文件位置)

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

1.3.2.min.js“&gt;&lt;%}%&gt;

归功于此博客文章的作者Jouni Heikniemi: http://www.heikniemi.net/hardcoded/2009/08/jquery-intellisense-on-asp-net-mvc/

答案 1 :(得分:0)

由于这个问题已经死了,我将在这里给出答案。

没有。这不可能。原因是Visual Studio无法知道哪个 scriptmanager控制了scripmanagerproxy应该引用的内容,因此它不会引用任何脚本管理器。因此,在编辑控件时,intellisense不可用。