ASP.net MVC: получите “Основной контроллер” в RenderAction

Вы изменили строку подключения? Отсутствует равно (=).

<add name="AutoPrint" connectionString="data source.\AutoPrintDb.sqlite" providerName="System.Data.SQLite" />

-

<add name="AutoPrint" connectionString="data source=.\AutoPrintDb.sqlite" providerName="System.Data.SQLite" />
6
задан chbu 15 May 2009 в 08:58
поделиться

3 ответа

Не могли бы вы передать его в качестве параметра контроллеру?

- Site.master -

 <% Html.RenderAction("Index", "BreadCrumb"
                      new { controller = ViewData["controller"] }); %>

- BreadCrumbController.cs -

  public ActionResult Index(string controller)
  {

  }

- ToursController.cs- -

 public ActionResult SomeAction(...)
 {
      // ....
      ViewData["controller"] = "Tours"  
      // You could parse the Controller type name from:
      // this.ControllerContext.Controller.GetType().Name
      // ....
 }
2
ответ дан 16 December 2019 в 21:45
поделиться

Что вы имеете в виду под "настоящим" контроллером? Ваше действие указывает на одного контроллера.
Вы имеете в виду предыдущий контроллер? Итак: контроллер, который использовался для рендеринга вашего представления, в котором была создана ваша ссылка, который указывает на ваш контроллер хлебных крошек?
Если вы не добавите имя этого контроллера в ссылку в качестве параметра, пути к нему нет.

0
ответ дан 16 December 2019 в 21:45
поделиться

Родительский вид/контекст контроллера

Если вы используете MVC 2 RC (не знаете о предыдущих версиях), вы можете попасть в родительский контроллер через контекст вида, где вы найдете свойство с именем:

ViewContext ParentActionViewContext;

-контекст родительского вида, а также ссылку на его контроллер, который инициировал рендеринг вида...

Routing

Мне кажется (из вашего вопроса), что у вас есть запросы с произвольным количеством сегментов маршрута... В данном случае у вас есть два варианта:

  1. Определите свой маршрут жадным параметром, где actions в данном случае перехватит все действия в URL вашего запроса

    {контроллер}/{*действия}.
    
  2. Создайте пользовательский класс Route, который будет обрабатывать ваши пользовательские требования к маршруту и заполнять RouteData по мере необходимости.

второй класс требует немного больше работы и знаний по маршрутизации, но это поможет вам получить немного больше знаний о маршрутизации Asp.net MVC. Я делал это в прошлом и это был ценный урок. А также элегантный способ обработки моих требований к маршруту.

6
ответ дан 16 December 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: