2011-04-13 3 views
7

Quelles sont les meilleures pratiques pour implémenter le modèle hashbang/Ajax crawl de Google avec ASP.NET MVC?Implémentation de l'analyse hashbang/Ajax de Google avec ASP.NET MVC?

http://code.google.com/web/ajaxcrawling/docs/getting-started.html:

le robot modifier chaque URL AJAX telles que

www.example.com/ajax.html#!key=value 

pour devenir temporairement

www.example.com/ajax.html?_escaped_fragment_=key=value 

cadre routage ASP.NET ne permet pas de spécifier paramètres de chaîne de requête, mais bien sûr, vous pouvez toujours créer une méthode d'action qui prend comme paramètre un paramètre _escaped_fragment_ (ou même simplement rechercher le paramètre _escaped_fragment_ dans l'en-tête de la requête).

C'est un peu lourd cependant. Y a-t-il un meilleur moyen?

MISE À JOUR:

je suis allé de l'avant et mis en œuvre le schéma suivant (dans mon cas, les fragments ressemblent à un chemin d'URL régulière). Encore une fois, ce n'est pas vraiment l'approche la plus propre, donc les suggestions sont les bienvenues.

public virtual ActionResult Index(int id, string _escaped_fragment_) 
{ 
    //Handle Google Ajax Crawler 
    if (_escaped_fragment_ != null) 
    { 
     string[] fragments = _escaped_fragment_.Split(new char[]{'/'}, StringSplitOptions.RemoveEmptyEntries); 
     if (fragments.Length > 0) 
     { 
      //parse fragments 
      //return static content 
     } 
    } 
    //normal action operation 
    return View(); 
} 
+5

Vous pouvez mettre que les contrôleurs OnActionExecuting méthode, plutôt que dans l'action. De cette façon, vous pouvez rediriger vers l'action que vous croyez la meilleure. –

+0

Oui, probablement vrai ... –

Répondre

1

Vous écrivez utiliser un liant modèle personnalisé qui prendra le paramètre de chaîne de requête _escaped_fragment_ et revenir un modèle fortement typé:

public ActionResult Index(MyModel model) 
{ 
    // Directly use model.Id, model.Key1, model.Key2, ... 
    return View(); 
} 
Questions connexes