Да и нет.
По сути, вы можете зарегистрировать все свои пользовательские элементы управления в web.config. НО вы столкнетесь с проблемами, если захотите использовать какой-либо из ваших пользовательских элементов управления в других пользовательских элементах управления.
Так что, если вы никогда не собираетесь вкладывать пользовательские элементы управления, все готово. НО, если вы хотите гибко вкладывать пользовательские элементы управления, у вас есть несколько вариантов:
По сути, это не ошибка в фреймворке, а результат компиляции всего в одну сборку. Приложение по существу не может различить пользовательские элементы управления.
Здесь есть дополнительная информация здесь и здесь. Прочитайте комментарии по этому вопросу.
Это не возможно в web.config, насколько я знаю. Существует пара обходных решений... можно было бы быть помещен Ваши средства управления в отдельном проекте и скомпилировал бы их в единственный блок, на который ссылаются в web.config.
Лично, мне нравится пропускать web.config регистрацию и просто регистрировать их на любой странице, использует средства управления. Это избежало бы проблемы повреждения web.config другого разработчика.
«Шаблон MVC в целом» - не нужно, но полезно. ASP.NET - тоже не обязательно.
.NET 3.5 - да. Это будет ваш рабочий инструмент, вы должны освоить его.
Очень полезным будет понимание многоуровневой архитектуры, поскольку на этот раз вам придется сначала подумать о том, как вы организуете свое приложение, в отличие от прямого взлома с помощью элементов управления в WebForms.
Также вы не избежите знания HTML / CSS, возможно JavaScript.
Просто не пугайтесь. Делайте это по одному шагу за раз, и вы получите это. Просто не читай слишком много. Практикуйте это.
Множество очень полезных учебников можно найти здесь: ASP.NET MVC Tutorials
Также читайте блоги от ASP.NET MVC «родителей»:
Вот адаптация решения @Jeff Fritz для VB.NET. Он делает то же самое, но включает все элементы управления, расположенные в любом месте решения. (В нашей архитектуре используются модули, которые могут быть включены как внешние компоненты SVN, поэтому это дает очень хороший способ убедиться, что хост-приложение знает обо всех элементах управления модуля.)
Sub RegisterUserControls()
Dim Config As Configuration = WebConfigurationManager.OpenWebConfiguration("~/")
Dim WebSection As PagesSection = TryCast(Config.GetSection("system.web/pages"), PagesSection)
Dim ToRemove As List(Of TagPrefixInfo) = ( _
From t As TagPrefixInfo In WebSection.Controls _
Select t Where t.Source IsNot Nothing AndAlso t.Source.EndsWith(".ascx") _
).ToList
For Each t As TagPrefixInfo In ToRemove
WebSection.Controls.Remove(t)
Next
Dim SiteRoot As New DirectoryInfo(Server.MapPath("~"))
For Each f As FileInfo In SiteRoot.GetFiles("*.ascx", SearchOption.AllDirectories)
Dim Source As String = Path.Combine("~/", f.FullName.Replace(SiteRoot.FullName, "")).Replace("\", "/")
Dim TagName As String = Path.GetFileNameWithoutExtension(f.Name)
Dim NewTag As New TagPrefixInfo( _
tagPrefix:="YOURPREFIX", _
nameSpace:=Nothing, _
assembly:=Nothing, _
TagName:=TagName, _
Source:=Source)
WebSection.Controls.Add(NewTag)
Next
Config.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection("system.web/pages")
End Sub
(Конечно, вы могли бы сослаться на это в Application_Start, как Джефф сделал.)