Реализуете сканирование Google hashbang / Ajax с ASP.NET MVC? - PullRequest
7 голосов
/ 13 апреля 2011

Каковы рекомендации по внедрению шаблона сканирования hashbang / Ajax от Google с ASP.NET MVC?

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

сканер будет изменять каждый URL-адрес AJAX, например

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

, чтобы временно стать

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

Структура маршрутизации ASP.NET не позволяет указывать параметры строки запроса, но, конечно, вы всегда можете создать метод действия, который принимает _escaped_fragment_ какпараметр (или даже просто найдите параметр _escaped_fragment_ в заголовке запроса).

Однако это немного громоздко.Есть ли лучший способ?

ОБНОВЛЕНИЕ:

Я реализовал следующий шаблон (в моем случае фрагменты выглядят как обычный путь URL).Опять же, это едва ли самый чистый подход, поэтому любые предложения приветствуются.

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();
}

1 Ответ

1 голос
/ 13 апреля 2011

Вы пишете с использованием пользовательского связывателя модели, который примет параметр строки запроса _escaped_fragment_ и вернет некоторую строго типизированную модель:

public ActionResult Index(MyModel model)
{
    // Directly use model.Id, model.Key1, model.Key2, ...
    return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...