没有 Web 用户控件的智能感知 (ascx)

本文关键字:感知 ascx 智能 Web 用户 控件 没有 | 更新日期: 2023-09-27 18:36:28

我们最近将 ASP.NET Web 应用程序从 .NET 3.5 迁移到 4.0。

迁移后,我们的 Web 用户控件没有智能感知,因此我们不能使用用户控件在页面中添加事件处理程序。

新创建的用户控件也是如此(我们将用户控件拖放到页面中)。

Visual Studio 2012 显示以下编译器警告:

Element 'TestWebUserControl1' is not a known element. This can occur if there is a compilation error in the Web site, or the web.config file is missing.

网络用户控制:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestWebUserControl1.ascx.cs" Inherits="sMatSupervisor.TestWebUserControl1" %>
using System;
namespace sMatSupervisor
{
    public partial class TestWebUserControl1 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

测试页:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestForm.aspx.cs" Inherits="sMatSupervisor.TestForm" %>
<%@ Register Src="~/TestWebUserControl1.ascx" TagPrefix="uc1" TagName="TestWebUserControl1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <uc1:TestWebUserControl1 runat="server" id="TestWebUserControl1" />
    </div>
    </form>
</body>
</html>
using System;
namespace sMatSupervisor
{
    public partial class TestForm : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

网络配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <configSections>
  </configSections>
  <connectionStrings configSource="connections.config" />
  <appSettings file="global.config">
  </appSettings>
  <system.web>
    <compilation debug="true">
      <assemblies>
        <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
    </compilation>
    <pages>
      <controls>
        <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
      </controls>
    </pages>
  </system.web>
  <system.webServer>
    <httpRedirect enabled="false" />
  </system.webServer>
</configuration>

没有 Web 用户控件的智能感知 (ascx)

以下是将 targetFramework="4.0" 添加到 Web.config 中的编译标记的解决方案:

<compilation debug="true" targetFramework="4.0">

它缺少目标框架="4.0"。

在 System.Web.UI.ScriptManager' 中找到的解决方案是在未引用的程序集中定义的。但它在大会上?