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
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Forum
RE : FORMULAIRERE : FORMULAIRE par ap24dp
Cliquez pour lire la suite par ap24dp RE : FORMULAIRERE : FORMULAIRE par jopop
Cliquez pour lire la suite par jopop RE : FORMULAIRERE : FORMULAIRE par ap24dp
Cliquez pour lire la suite par ap24dp RE : FORMULAIRERE : FORMULAIRE par jopop
Cliquez pour lire la suite par jopop
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|