Je commence à me demander si c'est possible. Cela semble tellement simple.Ajouter un contrôle utilisateur personnalisé au projet Web publié
J'ai un projet web publié. Je veux ajouter quelques fichiers .ascx (avec des fichiers .cs & designer.cs) à ce site Web publié. Ce sont des contrôles utilisateur personnalisés simples qui accèdent aux méthodes faisant déjà partie de l'application d'origine.
Question? Est-il possible de simplement les déposer dans le projet web publié sans construire la solution complète? Si non pourquoi? Lorsque j'abandonne ces fichiers et que j'exécute mon application, j'obtiens l'erreur suivante: "Erreur d'analyse: Impossible de charger le type" nom de mon espace de noms de contrôles personnalisés "".
Il n'y a pas beaucoup de code à afficher, c'est tout ce que j'ai.
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
}
}
Encore une fois, il semble si facile. Qu'est-ce que je rate? Ou est-ce pas possible? Merci.
MISE À JOUR: Je l'ai compris. Le scénario ci-dessus est possible. Le problème n'est pas avec l'espace de nom comme le suggère le message d'erreur. C'est plutôt la déclaration code-behind. Les fichiers code-behind pour tout type de fichier sont compilés lors de la publication de l'application. Je suis toujours confus quant à pourquoi il semble être modifiable lorsque vous naviguez à travers un répertoire web, je pense qu'il serait stocké dans un fichier. Dll ou quelque chose. Peut-être que quelqu'un peut faire la lumière sur cela. Quoi qu'il en soit, remplacer le code-behind par du code-code résout le problème car les fichiers de code ne sont pas compilés et sont donc lisibles à l'exécution de l'application.
Certains liens qui ont été utiles peuvent être trouvés here et here.
Bien que je viens de remarquer ceci "Ce sont des contrôles utilisateur personnalisés simples qui accèdent aux méthodes déjà partie de l'application d'origine." - dites-vous que les contrôles de l'utilisateur font référence à l'application de base? – Ken
Exactement! Extensions portables si vous voulez. – trevorc
Eh bien l'une des raisons pour les contrôles utilisateur est la réutilisation et votre contrôle n'est pas réutilisable si cela dépend d'une application dans laquelle vous l'utilisez ... si le contrôle dépend de l'application qui expliquerait aussi pourquoi vous auriez besoin de recompiler le application entière – Ken