Overblog Suivre ce blog
Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

1 avril 2014 2 01 /04 /avril /2014 16:04
Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
17 février 2014 1 17 /02 /février /2014 21:03

ProfileCommon ne semble plus généré avec le Framework .NET 4.x .

1-HttpContext.Current.Profile
Exemple : je définis une propriété « Email » accessible aux utilisateurs anonymes
Web.config
<configuration>
  <system.web>
    <anonymousIdentification enabled="true" cookieless="AutoDetect"/>
    <profile enabled="true">
      <properties>
        <add name="Email" type="String" allowAnonymous="true"/>
      </properties>
    </profile>
  </system.web>
<!-- etc. -->
</configuration>

 

Ecriture
HttpContext.Current.Profile.SetPropertyValue("Email", "bellinmarie@live.com");
Lecture
HttpContext.Current.Profile.GetPropertyValue("Email").ToString();

 

2- Se créer sa propre classe ProfileCommon
On peut aussi se construire sa propre classe ProfileCommon, qui hérite de ProfileBase et permet d’accéder aux propriétés définies dans le fichier de configuration.
  public class ProfileCommon :ProfileBase
    {
        public ProfileCommon() { }
 
        private string _email;
 
        [SettingsAllowAnonymous(true)]
        public string Email
        {
            get { return HttpContext.Current.Profile.GetPropertyValue("Email").ToString(); }
            set { _email = value; }
        }
 
        public override void Save()
        {
            HttpContext.Current.Profile.SetPropertyValue("Email", _email);
        }
    }

Utilisation
ProfileCommon profile = new ProfileCommon();
TextBox1.Text = profile.Email;
profile.Email ="bellinmarie@live.com";
profile.Save();

 

« Microsoft.AspNet.Providers.Core 2.0.0 » depuis Visual Studio (menu contextuel > gérer les packages Nuget)

 

Documentation nuget       

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
17 février 2014 1 17 /02 /février /2014 17:43
1-Avoir sa base de données ASPNETDB.MDF
Au pire

2 -  Gérer la base avec l’outil d’administration
1 – invite de commande
"C:\Program Files\IIS Express\iisexpress.exe" /path:c:\windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles /vpath:"/asp.netwebadminfiles" /port:8089 /clr:4.0 /ntlm  

2 – dans le navigateur
http://localhost:8089/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=[apppath]\&applicationUrl=/

Remplacer [apppath] par le chemin complet vers le répertoire du site web .  
Exemple :
http://localhost:8089/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=C:\Users\romagny\Documents\Visual Studio 2013\WebSites\ECommerceDemo\ECommerceDemo\&applicationUrl=/  

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
2 février 2014 7 02 /02 /février /2014 01:10

V –Personnalisation / Profil

 

Schéma (partiel) de la base ASPNETDB.MDF

  web4-copie-1

Web.config

<system.web>

   <profile enabled="true">

      < properties>

        < add name="Name" type="String"/>

        < add name="FirstName" type="String"/>

      </properties>

    </profile>

 

Accès au profil et sauvegarde Page EditProfile.aspx

protected void Page_Load(object sender, EventArgs e)

    {

        LoadProfile();

    }

    protected void btnSaveProfile_Click(object sender, EventArgs e)

    {

        SaveProfile();

    }

 

    public void LoadProfile()

    {   

        if (!this.IsPostBack)

        {

            string userName = Membership.GetUser().UserName;

            ProfileCommon profile = Profile.GetProfile(userName);

 

            txtName.Text = profile.Name;

            txtFirstName.Text = profile.FirstName;

        }

    }

 

    public void SaveProfile()

    {

        string userName = Membership.GetUser().UserName;

        ProfileCommon profile = Profile.GetProfile(userName);

 

        profile.Name = txtName.Text;

        profile.FirstName = txtFirstName.Text;

        profile.Save();

    }

 

Aller plus loin :

-          Créer des groupes

 

<system.web>

  <profile enabled="true">

      < properties>

        < add name="Name" type="String"/>

        < add name="FirstName" type="String"/>

        <group name="Address">

          <add name="Street" type="String"/>

          <add name="PostalCode" type="String"/>

          <add name="City" type="String"/>

          <add name="State" type="String"/>

          <add name="Country" type="String"/>

        </group>

      </properties>

    </profile>

 

Accès aux groupes, exemple :

txtCity.Text = profile.Address.City;

 

Permettre la sauvegarde de profil pour un utilisateur anonyme(panier par exemple)

Dans web.config

<system.web>

 <anonymousIdentification enabled="true" cookieless="AutoDetect"/>

    <profile enabled="true">

      < properties>

        < add name="Name" type="String" allowAnonymous="true"/>

        < add name="FirstName" type="String" allowAnonymous="true"/>

      </properties>

    </profile>

 

Accèder

  protected void Page_Load(object sender, EventArgs e)

    {

        LoadProfile();

    }

    protected void btnSaveProfile_Click(object sender, EventArgs e)

    {

        SaveProfile();

 

       

    }

 

    public void LoadProfile()

    {   

        if (!this.IsPostBack)

        {

            if (!User.Identity.IsAuthenticated)

            {

                //ProfileCommon profile = (ProfileCommon)Context.Profile;   

 

                txtName.Text = this.Profile.Name;

                txtFirstName.Text = this.Profile.FirstName;

            }

            else

            {

                string userName = Membership.GetUser().UserName;

                ProfileCommon profile = Profile.GetProfile(userName);

 

                txtName.Text = profile.Name;

                txtFirstName.Text = profile.FirstName;

 

            }

                       

        }

    }

 

    public void SaveProfile()

    {

       

        if (!User.Identity.IsAuthenticated)

        {

            //ProfileCommon profile = (ProfileCommon)Context.Profile;

 

            this.Profile.Name = txtName.Text;

            this.Profile.FirstName = txtFirstName.Text;

 

        }

        else

        {

            string userName = Membership.GetUser().UserName;

            ProfileCommon profile = Profile.GetProfile(userName);

 

            profile.Name = txtName.Text;

            profile.FirstName = txtFirstName.Text;

            profile.Save();

 

        }

 

    }

 

 

 

 

Astuce : il est possible de « merger » le contenu du profil anonyme au profil une fois connecté

Dans Global.asax

  void Profile_MigrateAnonymous(object sender, ProfileMigrateEventArgs e)

    {

        ProfileCommon profile = this.Profile.GetProfile(e.AnonymousID);

 

        this.Profile.Name = profile.Name;

        this.Profile.FirstName = profile.FirstName;

     

        // delete anonymous profile

        ProfileManager.DeleteProfile(e.AnonymousID);

        AnonymousIdentificationModule.ClearAnonymousIdentifier();

 

    }

 

 

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
2 février 2014 7 02 /02 /février /2014 01:10

VI – Autorisations - Créer des règles d’accès en fonction des rôles

 

Avec l’outil de configuration asp.net de visual studio ,on peut créer ou gérer des règles d’accès.

Exemple : on crée un dossier Admin contenant toutes les pages qui ne seront accessibles qu’aux administrateurs du site . Un fichier web.config sera alors ajouté Au dossier Admin.

<?xml version="1.0" encoding="utf-8"?>

<configuration>

    <system.web>

        < authorization>

            <allow roles="Administrator" />

            <deny users="*" />

        </authorization>

    </system.web>

</configuration>

 

 

Astuces : allow(autoriser),deny(refuser),* tous, ? utilisateur anonyme

On peut aussi spécifier des utilisateurs directement

exemple

<allow users="durand,dupond"/>

 

Définir les autorisations pour une page dans web.config directement :

<location path="EditProfile.aspx">

             <system.web>

                    <authorization>

                           < deny users="?"/>

                           < allow users="*"/>

                    </authorization>

             </system.web>

       </location>

 

 

Ø  Afficher des éléments de menu seulement selon les rôles(exemple les administrateurs ont un lien pour administrer le site que seuls eux peuvent voir)

Web.config

<siteMap>

      < providers>

        < remove name="AspNetXmlSiteMapProvider"/>

        < add name="AspNetXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true" siteMapFile="Web.sitemap"/>

      </providers>

</siteMap>

 

Mettre à jour Web.sitemap(vérifier que les chemins contiennent bien le nom de dossier si besoin)

Il est possible de définir explicitement l’attribut roles de chaque sitemapnode mais normalement ce n’est pas utile .

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
2 février 2014 7 02 /02 /février /2014 01:09

IV– sécurité authentification

Y aura-t-il besoin d’une section membres sur le site ?

-          Créer un compte – se connecter(hyperlink)

o   Créer un compte dirige vers une page de création de compte

o   Se connecter dirige vers page de connexion contenant un lien vers password oublié (et un lien pour créer un compte peut aussi être pratique)

§  Password oublié dirige vers une page pour retrouver son mot de passe

 

La création de compte utilisateur dirige ensuite vers une page de profil

 

 

A-     Loginview (sur la masterpage) - permettant de se connecter

2 états :

-          anonyme

-          connecté

Exemple : affiche une vue pour se connecter (avec un control login)

et une vue une fois connecté (avec un loginame affichant « bonjour nommembre » + un loginstatus) . on peut aussi imaginer un hyperlink vers une gestion de profil

<asp:LoginView ID="LoginView1" runat="server">

                    <AnonymousTemplate>

                        <asp:Login ID="Login1" runat="server"

                            CreateUserText="Devenir membre" CreateUserUrl="~/Register.aspx"

                            PasswordRecoveryText="Mot de passe oublié" PasswordRecoveryUrl="~/PasswordRecovery.aspx">

                        </asp:Login>

                    </AnonymousTemplate>

                    <LoggedInTemplate>

                        <div class="welcomebox">

                             <asp:LoginName ID="LoginName1" runat="server" FormatString="Hello {0}" meta:resourcekey="LoginName1Resource1"/>

                             <br />

                             <asp:LoginStatus ID="LoginStatus1" runat="server" />

                        </div> 

                    </LoggedInTemplate>

                </asp:LoginView>

 

 

Astuce : Outil de configuration asp.net .Utilisateurs/roles(administrateur,…)/autorisations et règles (accès aux différentes pages)

Dossier spécial App_Data contient la base de données ASPNETDB.MDF créée

Ø  Créer des dossiers et mettre les pages webs selon les rôles et accès(administrateurs,utilisateur authentifé,…)

Ø  Règles d’autorisation

 

Authentification asp.net

Web.config

<system.web>

    <authentication mode="Windows"/>

 

Les fournisseurs d’authentification

-          Form : internet , gestion des utilisateurs ar l’appliation avec une base de données

-          Windows : environnement intranet ou les comptes windows utilisateurs sont centralisés sur un serveur

-          Passport :internet avec microsoft passeport

-          None

web3.png

La partie pour les envois de mail

<system.net>

    <mailSettings>

      < smtp from=dupond@wanadoo.fr>

        < network host="smtp.orange.fr" />

      </smtp>

    </mailSettings>   

  </system.net>

 

B - Createuserwizard –Page Register.aspx -  création de compte

Astuces : ContinueDestinationPageUrl

1         Retirer la question de sécurité

 « Personnaliser l’étape créer un utilisateur » > retrirer les 2 parties du tableau contenant les questions et réponses de sécurité puis dans web.config

<system.web>

   

    <membership>

      < providers>

        < clear/>

        < add name="AspNetSqlMembershipProvider"

            connectionStringName="LocalSqlServer"

            type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

            requiresQuestionAndAnswer="false"

            />

       

      </providers>

    </membership>

 

Ou

  <system.web>

  <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">

    <providers>

      < clear />

      < add

        name="SqlProvider"

        type="System.Web.Security.SqlMembershipProvider"

        connectionStringName="LocalSqlServer"

        requiresQuestionAndAnswer="false" />

    </providers>

  </membership>

 

2 Ajouter un email de création de compte

a- RegistrationMail.txt fichier texte contenant le message envoyé lors de l’inscription

Votre compte a été crée.Voici vos identifiants :

 

    Username: <%UserName%>

    Password: <%Password%>

 

b- dans la page register.aspx

MailDefinition

Ici on remplace UserName et Password dans le mail envoyé

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"

            maildefinition-bodyfilename="RegistrationMail.txt"

            maildefinition-from="dupond@wanadoo.fr"

            onsendingmail="Createuserwizard1_SendingMail"

       >

 

Dans register.aspx.cs

protected void Createuserwizard1_SendingMail(object sender, MailMessageEventArgs e)

    {

        e.Message.IsBodyHtml = false;

        e.Message.Subject = "thanks for registration";

        e.Message.Body = e.Message.Body.Replace("<%UserName%>", CreateUserWizard1.UserName);

        e.Message.Body = e.Message.Body.Replace("<%Password%>", CreateUserWizard1.Password);

    }

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
2 février 2014 7 02 /02 /février /2014 01:09

3 Ajouter un mail de demande de confirmation d'inscription 

a-      Fichier VerificationMail.txt

Bonjour <%UserName%>

 

Pour valider votre inscription,veuillez cliquer sur ce lien <%VerificationUrl%>

 

b-      Register.aspx .Suite à la création du compte,l’utilisateur ne pourra pas se connecter tant qu’il n’aura pas activé son compte en cliquant sur le lien envoyé dans son mail d’inscription

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"

            DisableCreatedUser="true" LoginCreatedUser="false"

            OnCreatedUser="CreateUserWizard1_CreatedUser" UnknownErrorMessage="Vous allez recevoir un mail de confirmation d'inscription"

       >

 

Register.aspx.cs

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)

    {

        MembershipUser user = Membership.GetUser(CreateUserWizard1.UserName);

        Guid userGuid = (Guid)user.ProviderUserKey;

        string urlBase = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath;

        string verifyUrl = "/VerifyNewUser.aspx?ID=" + userGuid.ToString();

        string fullPath = urlBase + verifyUrl;

        string appPath = Request.PhysicalApplicationPath;

 

 

        using (StreamReader reader = new StreamReader(appPath + @"/VerificationMail.txt"))

        {

            MailMessage message = new MailMessage();

            message.IsBodyHtml = false;

            message.From = new MailAddress("dupond@wanadoo.fr");

            message.To.Add(CreateUserWizard1.Email);

            message.CC.Add(new MailAddress("dupond@wanadoo.fr"));

            message.Subject = "Vérification d'inscription";

 

            message.Body = reader.ReadToEnd();

            message.Body = message.Body.Replace("<%UserName%>", CreateUserWizard1.UserName);

            message.Body = message.Body.Replace("<%VerificationUrl%>", fullPath);

 

            SmtpClient client = new SmtpClient();

            client.Send(message);

 

        }

 

    }

 

c-       Ajouter une page VerifyNewUser.aspx avec un simple label

protected void Page_Load(object sender, EventArgs e)

    {

        if (string.IsNullOrEmpty(Request.QueryString["ID"]))

        { }

        else

        {           

            try

            {

                Guid userGuid;

                userGuid = new Guid(Request.QueryString["ID"]);

 

                MembershipUser user = Membership.GetUser(userGuid);

                if (user == null)

                {

                    Label1.Text = "Aucun utilisateur correspond à l'identifiant.";

                }

                else if (user.IsApproved)

                {

                    Label1.Text = "Ce compte a déja été activé .";

                }

                else

                {

                    user.IsApproved = true;

                    Membership.UpdateUser(user);

                    Label1.Text = "Votre compte est activé, vous pouvez désormais vous connecter";

                }

 

            }

            catch

            {

                Label1.Text = "Pas d'ID spécifié.";

            }         

        }

    }

 

    C - PasswordRecovery –Page PasswordRecovery.aspx – récupérer ses identifiants oubliés

<body>

    <form id="form1" runat="server">

    <div>

        <asp:PasswordRecovery ID="PasswordRecovery1" runat="server">

        </asp:PasswordRecovery>

    </div>

    </form>

</body>

</html>

Ne pas oublier d’indiquer au control login de la page d’authentification PasswordRecoveryUrl et passwordRecoveryText

    D-ChangePassword – Page EditProfile.aspx -Changer de mot de passe

Un utilisateur connecté pourrait avoir un lien lui permettant d’éditer son profil,changer de mot de passe (ce hyperlink étant ajouté à l’état connecté du LoginView de la masterpage)

<asp:LoginView ID="LoginView1" runat="server">

                    <AnonymousTemplate>

                        <asp:Login ID="Login1" runat="server"

                            CreateUserText="Devenir membre" CreateUserUrl="~/Register.aspx"

                            PasswordRecoveryText="Mot de passe oublié" PasswordRecoveryUrl="~/PasswordRecovery.aspx">

                        </asp:Login>

                    </AnonymousTemplate>

                    <LoggedInTemplate>

                        <div class="welcomebox">

                             <asp:LoginName ID="LoginName1" runat="server" FormatString="Hello {0}" meta:resourcekey="LoginName1Resource1"/>

                             <br />

                             <asp:LoginStatus ID="LoginStatus1" runat="server" />

                             <br />

                            <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/EditProfile.aspx">Editer le profil</asp:HyperLink>

                        </div> 

                    </LoggedInTemplate>

                </asp:LoginView>

 

EditProfil.aspx – on ajoute juste un control ChangePassword

<asp:ChangePassword ID="ChangePassword1" runat="server">

        </asp:ChangePassword>

 

Il est possible également d’envoyer un mail informant les nouveaux identifants

Ajouter un fichier texte ChangePasswordMail.txt

Voici vos nouveaux identifiants

 

UserName: <%UserName%>

Password: <%Password%>

 

 Dans la page EditProfil.aspx,ajouter la balise Maildefinition au control ChangePassword

 

  <asp:ChangePassword ID="ChangePassword1" runat="server">

            <ChangePasswordTemplate>

                <table cellpadding="1" cellspacing="0" style="border-collapse:collapse;">

                    <tr>

 

 

                </table>

            </ChangePasswordTemplate>

            <MailDefinition

                BodyFileName="~/ChangePasswordMail.txt"

                From="dupond@wanadoo.fr"

                Subject="Changement de mot de passe">

            </MailDefinition>

        </asp:ChangePassword>

 

 

 

Rappel des controls d’authentification asp.net

-          Login : permet à un membre de s’identifier

-          Loginstatus

-          Loginview

-          Loginname

-          Passwordrecovery

-          Changepassword

 

E – les controls de validation

-          Vérifier qu’un champ obligatoire n’est pas vide : requiredfieldvalidator

-          Vérifier que le contenu d’un champ respecte les valeurs acceptées : rangevalidator,regularexpressionvalidator, customvalidator

-          Vérifier que deux contenus correspondent (exemples 2 boites de saisie de mot de passe lors de la création d’un compte utilisateur) : comparevalidator

 

Ø  Affichage d’erreurs :

o   Texte entre les balises affiché par le contrôle de validation

o   Valeur de l’attribut errormessage du contrôle de validation affiché dans un control validationsummary

http://romagny13.over-blog.com/article-5481804.html

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
2 février 2014 7 02 /02 /février /2014 01:08

 III - Eléments de navigation

3         types de controls principalement permettent la navigation : menu,treeview,sitemappath

A-     Il faut déjà definir le plan du site grace à un fichier xml .sitemap

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

    <siteMapNode url="~/Default.aspx" title="Accueil"  description="Page d'accueil du site">

        <siteMapNode url="~/Contact.aspx" title="Contact"  description="Contacter le support" />

       

    </siteMapNode>

</siteMap>

 

B - dans le fichier de configuration web.config

<system.web>

    <siteMap defaultProvider="MySiteMapProvider" enabled="true">

      < providers>

        < add name="MySiteMapProvider" type="System.Web.XmlSiteMapProvider"  siteMapFile="Web.sitemap"/>

      </providers>

    </siteMap>

 

C – ajouter à la masterpage (ou à chaque page si pas de masterpage) un control<asp:SiteMapDataSource> liée  ce fournissseur

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server"/>

 

D - controls de navigation

-          Menu

 

 <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1" Orientation="Horizontal" StaticDisplayLevels="2">

            </asp:Menu>

 

 

Astuces :

Menu statique/dynamique(dynamique : s’ouvre quand l’utilisateur passe la souris dessus, StaticDisplayLevels="2" permet d’afficher « sur une seule ligne »)

ajouter des éléments au menu par code

<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal">

                <Items>

                    <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Accueil" Value="Accueil">

                    </asp:MenuItem>

                     <asp:MenuItem NavigateUrl="~/Contact.aspx" Text="Contact" Value="Contact">

                    </asp:MenuItem>

                </Items>

            </asp:Menu>

 

-          Treeview

<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1">

                </asp:TreeView>

 

Astuces il est possible définir la source par fichier xml avec un XmlDataSource, il suffit de renseigner la DataSourceId avec le nom de source de données

<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/mymenu.xml" />

 

http://msdn.microsoft.com/fr-fr/library/7a9swst5(v=vs.80).aspx

ajouter des éléments par code au treeview

<asp:TreeView ID="TreeView1" runat="server">

                    <Nodes>

                        <asp:TreeNode Text="Accueil" Value="Accueil" NavigateUrl="~/Default.aspx">

                            <asp:TreeNode Text="Contact" Value="Contact" NavigateUrl="~/Contact.aspx"></asp:TreeNode>

                        </asp:TreeNode>

                    </Nodes>

                </asp:TreeView>

 

 

-          SiteMapPath (affiche le chemin en cours) – pas de datasourceid à indiquer pour ce control

<asp:SiteMapPath ID="SiteMapPath1" runat="server">

                </asp:SiteMapPath>

 

 

A-     URL MAPPING

B-      Localisation resourcekey de sitemapnode/navigation multilingue

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
2 février 2014 7 02 /02 /février /2014 01:07

   I- Définir la structure de la page :

-          Header

-          Page

-          Footer

 

<body>

    <form id="form1" runat="server">

        <div class="header"></div>

        <div class="page"></div>

        <div class="footer"></div>

    </form>

</body>

 

Et à l’intérieur de chaque partie on définit la structure

<div class="header">

            <div class="menu"></div>

            <div class="rotator"></div>

            <div class="nav"></div>

        </div>

 

 

     II- Master page et page de contenu

A-     La master page contiendra ce qui est commun, c’est-à-dire en général en tête, pied et menu de la page

-          Masterpage (.master)

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">   

        </asp:ContentPlaceHolder>

    </div>

    </form>

</body>

</html>

 

+ toute la mise en forme (div,navigation,etc.)

-          Page de contenu

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

</asp:Content>

 

 

 

B-      Définir la masterpage dans le fichier web.config

Dans web.config

<system.web>

    <pages theme="Default" masterPageFile="~/MasterPage.master"></pages>

 

Retirer l’attribut masterpage des directives des pages de contenu(Default.aspx, ,…)

<%@ Page Title="" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

 

</asp:Content>

 

C-      Accèder aux éléments de la masterPgae

Méthode 1

protected void Page_Load(object sender, EventArgs e)

    {

      Label sample =  Master.FindControl("Label1") as Label;

      sample.Text = "it's Ok ! ";

 

    }

 

Méthode 2 – avec des propriétés

Ajouter dans masterpage

public partial class MasterPage : System.Web.UI.MasterPage

{

    public string myLabel

    {

        get { return Label1.Text; }

        set { Label1.Text = value; }

    }

}

 

Puis dans la page de contenu

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Contact.aspx.cs" Inherits="Contact" %>

<%@ MasterType VirtualPath="~/MasterPage.master" %>

 

Enfin on peut accéder à la propriété de la masterpage(+ IntelliSense)

  protected void Page_Load(object sender, EventArgs e)

    {

        Master.myLabel= "It's Ok !";

 

    }

 

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article
13 septembre 2007 4 13 /09 /septembre /2007 02:36

WEB SERVICE SOFTWARE FACTORY - DE L’INSTALLATION AU TEST DE SON PREMIER PROJET
Article + sources sur CodeS-SourceS

Bonsoir,

je viens de poster un tutotrial (qui est d'ailleurs plus un memento pour se rappeler l'ordre et les opérations chronoliquement que l'on doit réaliser avec Web Software Sevice Factory

il est disponible sur CodeS-SourceS ici
 

j'ai également poster une source exemple trés simple ici 

vous pouvez télécharger le document Word ici

  

pour rappel les étapes importantes sont (même quelques nuances sont possibles) :

Chronologie
1 – Ajout d’une nouvelle connexion (projet Host)
2 – Création des entités métiers (projet BusinessEntities)
3 – Création classes data repository (projet DataAccess)
4 – projet BusinessLogic – définition d’une classe « façade » Repositories
5 – définition d’un DataContract (projet DataContracts)
6 - Création des messages : Request ,Response (projet ServiceContracts)
7 - Création de l’interface de service du contrat (projet ServiceContracts)
8 – Implémentation de l’interface de service (projet ServiceImplementation)
9 - Remplir le corps de la méthode
10 – Exposer le service (projet Host)
11 – Ajouter une référence au service web (projet test)

++

Repost 0
Published by Romagny13 - dans ASP.NET
commenter cet article