none
Webpart et UserControl RRS feed

  • Question

  • Bonjour à tous
    Je viens de suivre un exemple de code relatif à l'utilisation mixée d'une webpart et d'un USerControl
    url de la source : http://www.codeproject.com/KB/sharepoint/wbparts.aspx

    J'ai suivi le déroulement des étapes mais lorque je veux utiliser ma webpart , j'ai ce message :

    ---

    Parser Error

    Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

    Parser Error Message: Could not load type 'mossWebDemo.UclDemo'.

    Source Error:

    Line 1:  <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UclDemo.ascx.cs" Inherits="mossWebDemo.UclDemo" %>
    Line 2:  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    Line 3:  &nbsp;&nbsp;

    Source File: /_CONTROLTEMPLATES/MyControls/UclDemo.ascx    Line: 1

    ---

    et chose bizarre aussi : il est dit dans ce petit tutorial qu'au moment de charger le webpart , je devrais voir le nom du fichier ascx uclDemo.ascx , moi je ne le trouve pas, par contre j'ai bien le nom de "hostdemo" (l'autre partie du projet)

    Pour info, comme je veux juste comprendre comment ça fonctionne j'ai simplifié le user ctrl (dans le tuto il demande un acces à une BDD), moi j'ai juste fait une textbox et un bouton ..

    Voci mon code :

    LA WEBPART :
    
    namespace MossImplementation
    {
      [DefaultProperty("Text")]
      [ToolboxData("<{0}:MossImplementation runat='server'></{0}:MossImplementation>")]
      public class HostDemo : System.Web.UI.WebControls.WebParts.WebPart
      {
        private Control _MyUserControl;
        protected override void CreateChildControls()
        {
        _MyUserControl =
        this.Page.LoadControl(@"~/_CONTROLTEMPLATES/MyControls/UclDemo.ascx");
             this.Controls.Add(_MyUserControl);
        }
      }
    }
    
    ------------------------------------------
    
    LE USER CTRL (.ascx)
    
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UclDemo.ascx.cs" Inherits="mossWebDemo.UclDemo" %>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    &nbsp;&nbsp;
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    &nbsp;&nbsp;
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    
    
    ---------------------------
    
    LE USER CTRL (.cs)
    
    namespace mossWebDemo
    {
        public partial class UclDemo : System.Web.UI.UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                Label1.Text = TextBox1.Text;
            }
        }
    }
    
    -----------------------------
    
    la ligne dans le webconfig de l'appli 
    
    <SafeControl Assembly="MossImplementation, Version=1.0.0.0, Culture=neutral,PublicKeyToken=28e6c4a49f5b1b08" Namespace="MossImplementation" TypeName="*" Safe="True" />
    
    -------------------------------------
    J'ai créé un repertoire dans 
    C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES
    
    ce repertoire s'appelle "MyControls" et contient mes deux fichiers (que j'ai copier /coller):
    UclDemo.ascx et UclDemo.ascx.cs
    
    ----------------------------
    

    je ne vois pas ce que je peuix faire de plus (ou de moins) ???
    Merci à vous si vous pouvez me dire ce que vous en pensez
    Cordialement
    Alain

    vendredi 18 décembre 2009 10:31

Toutes les réponses

  • Bonjour Alain,

    le problème c'est que vous n'avez pas déployé le fichier UclDemo.ascx.designer.cs
    Dans l'exemple, que vous nous donnez, ce qui fait planter c'est que le Label1 n'est déclaré nul part. donc le cs ne se compile pas.

    Dans l'exemple du site, ils créé un projet de type "Site Web" -> Ne génère pas de fichier *.designer.cs
    Alors que vous avez certainement utilisé un projet de type "Application Web" -> Génère un fichier *.designer.cs
    Si vous souhaitez faire fonctionner votre exemple, copier aussi le fichier designer

    Bref, de toute façon, je ne conseille pas cette pratique de copier le *.cs dans le 12. CV'est sujet à erreurs de compilations.
    je vous conseille plutot de déployer de compiler votre application, déployer la dll dans le gac et changer la référence dans le fichier .ascx.

    Voici un exemple :
    http://www.codeproject.com/KB/sharepoint/WebParticles.aspx

    Cordialement,
    Sylvain

     Euh, après vérification, je ne suis pas sur que le problème vienne de là.
    Je conseille toutefois, d'utiliser plutot des dll plutot que les fichiers cs

     

     

    vendredi 18 décembre 2009 13:02
    Auteur de réponse
  • Bonjour Sylvain et merci pour ces explications.
    Je suis bien ok avec vous que le copier coller dans les repertoires ne me convenaient pas trop non plus...
    Je vais essayer de m'appuyer sur le line que vous m'avez envoyé et vous tient sau courant
    Bonne journée
    Alain
    lundi 21 décembre 2009 09:17