Accueil > > > CRAWLABLELINKBUTTON : UPDATEPANEL ET RÉFÉRENCEMENT
CRAWLABLELINKBUTTON : UPDATEPANEL ET RÉFÉRENCEMENT
Information sur la source
Description
L'utilisation des UpdatePanels peut avoir des impacts non négligeable sur le référencement des moteurs de recherche. Ce contrôle permet de remedier à ce problème. Le CrawlableLinkButton hérite de LinkButton et lui rajoute la propriété NavigateUrl. Son rendu sera alors le suivant : <a href="navigateurl" onclick="void(__doPostBack(...));return false">... Ainsi, lorsqu'un utilisateur riche cliquera sur le lien, il fera un postback comme un classique LinkButton, par contre les robots iront référencer la page NavigateUrl. Il vous faudra donc gérer 2 cas : le cas du postback et le cas du classique lien. Ci-dessous : un exemple d'utilisation de ce contrôle.
Source
- <%@ Page Language="C#" MasterPageFile="~/Master/MasterPage.master" AutoEventWireup="true"
- CodeFile="temp.aspx.cs" Inherits="temp" Title="Untitled Page" %>
-
- <script type="text/C#" runat="server">
-
- void Page_Load(Object sender, EventArgs e)
- {
- if (!Page.IsPostBack)
- {
- BindData();
- }
- }
-
- private System.Diagnostics.Process _currentProcess;
- public System.Diagnostics.Process CurrentProcess {
- get {
- if (_currentProcess == null) {
- int pid = -1;
- if (Page.IsPostBack) {
- if (ViewState["PID"] != null) {
- pid = (int)ViewState["PID"];
- }
- } else {
- int.TryParse(Request.QueryString["PID"], out pid);
- }
- if (pid > -1) {
- _currentProcess = Processes.Find(delegate(
- System.Diagnostics.Process process){
- return process.Id == pid;
- });
- } else {
- _currentProcess = Processes[0];
- }
- }
- return _currentProcess;
- }
- set {
- ViewState["PID"] = value.Id;
- _currentProcess = value;
- }
- }
-
- private static List<System.Diagnostics.Process> _processes;
- public static List<System.Diagnostics.Process> Processes
- {
- get
- {
- // Ne faites pas ça, c'est pour l'exemple mais attention
- // c'est pas thread safe ...
- if (_processes == null)
- {
- _processes = new List<System.Diagnostics.Process>(
- System.Diagnostics.Process.GetProcesses());
- }
- return _processes;
- }
- }
-
- void gvProcess_SelectedIndexChanged(object sender, EventArgs e)
- {
- // ca aussi c'est mal, c'est pour simplifier l'exemple
- CurrentProcess = Processes[gvProcess.SelectedIndex];
- }
-
- void BindData()
- {
- gvProcess.DataSource = Processes;
- gvProcess.DataBind();
- }
-
- </script>
-
- <asp:Content ID="Content1" ContentPlaceHolderID="CPH1" runat="Server">
- <asp:UpdatePanel runat="server" UpdateMode="Conditional" >
- <ContentTemplate>
- <%=CurrentProcess.ProcessName %>
- </ContentTemplate>
- <Triggers>
- <asp:AsyncPostBackTrigger ControlID="gvProcess" />
- </Triggers>
- </asp:UpdatePanel>
- <asp:GridView runat="server" ID="gvProcess" AutoGenerateColumns="false"
- OnSelectedIndexChanged="gvProcess_SelectedIndexChanged">
- <Columns>
- <asp:TemplateField>
- <ItemTemplate>
- <cs:CrawlableLinkButton runat="server" CommandName="Select"
- Text="Select" NavigateUrl='<%# "temp.aspx?PID=" + Eval("id").ToString() %>' />
- </ItemTemplate>
- </asp:TemplateField>
- <asp:BoundField DataField="ProcessName" />
- <asp:BoundField DataField="VirtualMemorySize" />
- </Columns>
- </asp:GridView>
- </asp:Content>
<%@ Page Language="C#" MasterPageFile="~/Master/MasterPage.master" AutoEventWireup="true"
CodeFile="temp.aspx.cs" Inherits="temp" Title="Untitled Page" %>
<script type="text/C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindData();
}
}
private System.Diagnostics.Process _currentProcess;
public System.Diagnostics.Process CurrentProcess {
get {
if (_currentProcess == null) {
int pid = -1;
if (Page.IsPostBack) {
if (ViewState["PID"] != null) {
pid = (int)ViewState["PID"];
}
} else {
int.TryParse(Request.QueryString["PID"], out pid);
}
if (pid > -1) {
_currentProcess = Processes.Find(delegate(
System.Diagnostics.Process process){
return process.Id == pid;
});
} else {
_currentProcess = Processes[0];
}
}
return _currentProcess;
}
set {
ViewState["PID"] = value.Id;
_currentProcess = value;
}
}
private static List<System.Diagnostics.Process> _processes;
public static List<System.Diagnostics.Process> Processes
{
get
{
// Ne faites pas ça, c'est pour l'exemple mais attention
// c'est pas thread safe ...
if (_processes == null)
{
_processes = new List<System.Diagnostics.Process>(
System.Diagnostics.Process.GetProcesses());
}
return _processes;
}
}
void gvProcess_SelectedIndexChanged(object sender, EventArgs e)
{
// ca aussi c'est mal, c'est pour simplifier l'exemple
CurrentProcess = Processes[gvProcess.SelectedIndex];
}
void BindData()
{
gvProcess.DataSource = Processes;
gvProcess.DataBind();
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="CPH1" runat="Server">
<asp:UpdatePanel runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<%=CurrentProcess.ProcessName %>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvProcess" />
</Triggers>
</asp:UpdatePanel>
<asp:GridView runat="server" ID="gvProcess" AutoGenerateColumns="false"
OnSelectedIndexChanged="gvProcess_SelectedIndexChanged">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<cs:CrawlableLinkButton runat="server" CommandName="Select"
Text="Select" NavigateUrl='<%# "temp.aspx?PID=" + Eval("id").ToString() %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ProcessName" />
<asp:BoundField DataField="VirtualMemorySize" />
</Columns>
</asp:GridView>
</asp:Content>
Conclusion
Attention le référencement est un art plus complexe que ça, ce controle permet simplement de rendre référencables les linkbuttons. Il va de soit qu'il faut penser toute l'application pour qu'elle soit référencable et bien réfléchir à comment les robots vont naviguer sur le site.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
ASP et le référencement [ par Thibaut ]
J'ai une petite question intéressante :lors d'un référencement, est ce que le robot du moteur de recherche analyse ce qu'il y a entre les balises asp?
Bug webcontrol treeview [ par karim ]
Bonjour a tous !J'utilise VS.Net version Beta 2.je crée une webform dans laquelle j'ajoute un treeview et un bouton(webcontrols). Je ne rajoute aucun
Référencement [ par Benz ]
Bonjour,Il semble que la question que je vais poser soit déjà sur le forum, mais elle à du se perdre car elle est restée sans réponse. Je me permet do
Référencement site Broadvision [ par tchpub ]
Bonjour,j'aimerais avoir des conseils et des liens (genre tutoriels) sur la manière de référencer des sites en Broadvision. Le problème vient du fait
Collection de webcontrol en asp.net [ par pascalwick ]
voila je suis entrain de developper une dll de traduction qui va traduire une page et tous ses webcontrols.je desire donc faire une boucle pour trouve
TABSTRIP : je recherche un exemple ou une aide sur ce webcontrol [ par sehn ]
help, je débute en ASP.NET . Je n'arrive pas a le configurer graphiquementSeHN
User Webcontrol [ par Mia ]
Salut tlmVoilà, je voudrais créer un webcontrol que j'utiliserais dans +ieurs pages. QQun connait'il une adresse avec un bon tutorial en français sur
KeyPress event in a WebControl.TextBox [ par sdiacal ]
Je voudrais gèrer l'event d'appuyer sur une touche du clavier dans un WebControl.TextBox en .NET C#. J'ai vu qu'il y a un event appellé keyPress pour
Modifier un WebControl appartenant à un DataList. [ par tofyz ]
Bonjour à tous,Je vais essayer d'éclaicir mon propos!Je souhaite afficher, par l'intermédiaire d'un DataList une liste dont chaque lign
Référencement objet COM Excel [ par arkele ]
Bonjour,j'aimerai faire un export de données présentes dans un datagrid vers excel. J'utilise le code suivant : Dim xlapp As Exc
|
Derniers Blogs
[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE?[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE? par JeremyJeanson
Avec la sortie de la RC de Visual Studio 2010, Microsoft a mis un peu les points sur leS i en ce qui concernait le passage d'arguments. Mais nous somme un certain nombre à avoir pris ce changement comme un coup dur. Pour résumer la situation : à la sortie...
Cliquez pour lire la suite de l'article par JeremyJeanson [RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit
Forum
CONFIGURER SMTPCONFIGURER SMTP par nsegi
Cliquez pour lire la suite par nsegi LES UTILISATEUR LES UTILISATEUR par bahij
Cliquez pour lire la suite par bahij
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|