ASP.Net MVC: Как динамически генерировать метатег на основе содержимого URL? - PullRequest
0 голосов
/ 11 декабря 2008

Вот идея:

Когда пользователь хочет видеть / controller / action, тогда я хочу, чтобы на странице был метатег "robots" со значением, установленным в "all". Когда пользователь хочет увидеть / controller / action? Sort = hot & page = 2 (то есть у него есть строка запроса), я хочу, чтобы на странице был метатег «robots» со значением, установленным в «noindex». Конечно, это всего лишь пример, и это может быть еще один тег для существования этого вопроса.

На каком этапе в архитектуре MVC я могу разместить хук, чтобы представление генерировало нужный мне тег на главной странице?

1 Ответ

2 голосов
/ 11 декабря 2008

Я делаю что-то подобное для генерации заголовков страниц, и это хорошо работает. Поместите ваш тег на главной странице как обычно:

<%= Html.Encode(ViewData["Title"]) %>

Затем подкласс ActionFilterAttribute и переопределить OnActionExecuting. Оттуда вы получаете доступ к контексту контроллера и можете установить для своих viewdata все, что захотите.

public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.Controller.ViewData["title"] = "whatever";
    }

Последний шаг - установить атрибуты ваших контроллеров, которые вы хотите использовать в контексте фильтра. Вы можете наследовать от базового контроллера, если хотите добавить атрибут ко всем классам. Есть также перегрузки, если вы хотите передать параметры. В моем приложении. Я фактически передаю заголовок страницы.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...