Project type does not allow adding new "Web User Control"

It sounds like the main problem here is that you're unable to add a Web Forms User Controller using Visual Studio, so I will attempt to solve that.

I assume this is what you are already looking for, but this is what I do when I want to add a new Web Forms User Control. I right-click in Solution Explorer, I go to Add, and I click Web Forms User Control. enter image description here

However, I assume this isn't available to you. So the next place I would look is by selecting "New Item" when I right-click in Solution Explorer. Then, in the new add New Item dialog, I would go to Visual C# => Web => Web Forms User Control. enter image description here

If those two things are not options, then I would check to see that you have the additional web components installed into Visual Studio. It doesn't look like you said which version of Visual Studio you're using, so I am going to assume it's Visual Studio 2017. Open up your Visual Studio 2017 Installer, and click the Modify button. Choose ASP.NET and Web Development. These components should give you the template options. Even if you are not talking about VS17, the previous Visual Studio installers are similar- modify your installation and add the web components.

enter image description here

Lastly, especially if you have the option available to you in other projects, but not this one, I happen to know Visual Studio will hide options/templates that do not correspond to your project type. Open up your project's .csproj file in your favorite text editor (apparently NotePad++) and go to about line 13 where you should find a semicolon-delimited list of ProjectTypeGuids. In my example below, I have two: 349c5851-65df-11da-9384-00065b846f21 and fae04ec0-301f-11d3-bf4b-00c04f79efbc. The first represents ASP.NET MVC 5. The latter represents C#. The first guid is the reason Visual Studio considers this a web project. A list of project type guids are available here. enter image description here


Now that I've posted a bounty...

Once the items (.ascx, .ascx.cs, and .ascx.designer.cs files) have been added to the project and their content updated to reflect desired changes (Codebehind attribute, class names, etc), simply edit your .projitems file for the project (I used notepad++ for this, not sure if it matters).

You'll find two lines that look something like this - search your file names to find easily:

<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.designer.cs" />
<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.cs" />

If you have other similar files you'll see that they have a dependent upon node. Adding this node and reloading in VS will get you what you need:

<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.cs" >
  <SubType>ASPXCodeBehind</SubType>
  <DependentUpon>MyUserControl.ascx</DependentUpon>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)MyPath\UserControls\MyUserControl.ascx.designer.cs" >
  <DependentUpon>MyUserControl.ascx</DependentUpon>
</Compile>