我现在一直在反对这一点。我似乎无法在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) %>
并不妨碍控件的构建......
有关如何实现这一目标的任何想法?
答案 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不可用。