Я начинаю задаваться вопросом, возможно ли это. Это просто кажется простым.Добавить пользовательский элемент управления в опубликованный веб-проект
У меня есть опубликованный веб-проект. Я хочу добавить некоторые .ascx-файлы (с .cs & файлами designer.cs) на этот опубликованный веб-сайт. Это простые пользовательские элементы управления, которые используют методы, уже входящие в исходное приложение.
Вопрос? Можно ли просто отказаться от них в опубликованном веб-проекте без создания всего решения? Если не так?
Когда я отбрасываю эти файлы и запускаю свое приложение, я получаю сообщение об ошибке: «Ошибка анализа: не удалось загрузить тип» имени моего пользовательского пространства имен элементов управления ».
Существует не так много кода, чтобы показать, так что это все, что у меня есть.
Default.aspx
<%@ Page Language="C#" MasterPageFile="~/MasterPages/TwoColumn.master" AutoEventWireup="true"
Inherits="ApplicationName.Web.Default" CodeBehind="Default.aspx.cs" %>
<%@ Register TagPrefix="uc1" TagName="CustomControl" Src="~/Controls/Custom/CustomControl.ascx" %>
<asp:Content ID="content" contentplaceholder="cph" runat="Server">
<uc1:CustomControl ID="cc1" runat="server" CustomProperty="Hello World" />
</asp:Content>
CustomControl.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomControl.ascx.cs"
Inherits="ApplicationName.Web.Controls.Custom.CustomControl" %>
<asp:PlaceHolder ID="ph1" runat="server></asp:PlaceHolder>
CustomControl.ascx.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ApplicationName.Web.Controls.Custom
{
public partial class CustomControl : System.Web.UI.UserControl
{
///My logic
}
}
Опять же, кажется, так легко. Что мне не хватает? Или это невозможно? Благодарю.
ОБНОВЛЕНИЕ: Я понял это. Вышеупомянутый сценарий возможен. Проблема заключается не в пространстве имен, как это предлагает сообщение об ошибке. Скорее это декларация с кодом. Файлы кода для любого типа файлов компилируются при публикации приложения. Я все еще запутался относительно того, почему он доступен для редактирования, когда вы просматриваете веб-каталог, я думаю, он будет храниться в DLL-файле или что-то в этом роде. Может быть, кто-то может пролить свет на это.
В любом случае, заменяя код-код кодом, он исправляет проблему, поскольку файлы кода не компилируются и поэтому читаются во время выполнения приложения.
Некоторые ссылки, которые были полезны, могут быть найдены here и here.
Хотя я только заметил это «Это простые пользовательские элементы управления, которые получают доступ к уже существующим приложениям». - Вы говорите, что пользователь контролирует ссылку на основное приложение? – Ken
Точно! Портативные надстройки, если хотите. – trevorc
Ну, одна из причин пользовательских элементов управления - повторное использование, и ваш контроль не может использоваться повторно, если он зависит от приложения, в котором вы его используете ... если элемент управления зависит от приложения, которое также объясняет, почему вам необходимо перекомпилировать всего приложения. – Ken