Как создать действие контроллера для просмотра сведений

Унаследовал сайт Sitefinity. Необходимо добавить виджет MVC для просмотра сведений на страницах новостей.

Я нашел эта документация, но я не могу в ней разобраться - возможно, она была для другой версии. Наконец, я нашел UrlkeyPrefix, спрятанный глубоко в параметрах виджета новостей, но, следуя инструкциям документации, добавил «! Content» в середине URL-адреса моей страницы сведений (чего у меня не могло быть) и все еще не отображал мой пользовательский виджет .

Кто-нибудь знает, как правильно настроить контроллер, чтобы виджет отображался на страницах сведений?


Я как бы заставил пример в документации работать, за исключением того, что в моем URL-адресе все еще есть этот очень раздражающий «! Content»

https://mysite/news/!content/2017/08/24/my-article-title

 [ActionName("!content")]
 public ActionResult Filter()
 {
     return View("index", InitializeModel());
 }

При переходе по URL-адресу без "!content" отображается только страница со списком.


person Randy Hall    schedule 11.09.2017    source источник
comment
Вам действительно нужен специальный виджет для этого, разве вы не можете использовать встроенный виджет новостей? Что внутри метода Index? какая версия Sitefinity?   -  person Veselin Vasilev    schedule 12.09.2017
comment
@VeselinVasilev Я добавляю кое-что на страницы, на которых также есть виджет новостей. Метод index идентичен, так как я хочу одно и то же в обоих местах. По тегу это v10   -  person Randy Hall    schedule 12.09.2017


Ответы (1)


Природа MVC такова, что вы можете вызывать только одно действие за раз.

Предполагая, что вы вызываете действие Details в NewsController, другой виджет, который вы разместили на странице, не поймет, как реагировать на действие Details, пока вы не сделаете одну из двух вещей:

  1. Создайте соответствующее действие Details в своем собственном контроллере ИЛИ
  2. Переопределите HandleUnknownAction, чтобы обрабатывать то, что вы хотите, чтобы произошло, когда вызывается метод другого виджета. (лучше, так как это уменьшает двусмысленность)

Если вы хотите вызвать действие «Индекс» в своем пользовательском виджете, когда действие «Подробности» вызывается в новостях:

    protected override void HandleUnknownAction(string actionName)
    {
        this.ActionInvoker.InvokeAction(this.ControllerContext, "Index");
    }
person seraphym    schedule 12.09.2017