2015-07-09 2 views
0

У моего приложения уже есть общий контроллер для счетчика, который, в свою очередь, вызывает другие контроллеры, которые составляют часть строки запроса.Вызов контроллера внутри строки запроса другого контроллера MVC

SpinnerController:

public ActionResult Index() { return View();} 

Spinner Посмотреть

<html> 
    <body onload="JsHelpers.ShowSpinner('Page loading, please wait...'); window.location=JsHelpers.GetUrlParameter('page');"></body> 
</html> 

Теперь мой дом-регулятора:

pubic ActionResult Index() { /*my code goes here*/ return View()} 

Я разработал мастер-страницу, которая содержит ссылки называть мою HomeController через SpinnerController, поскольку мне нужно поддерживать старый поток.

Для например: Для Позвони HomeController,

@Url.Action("Index","Spinner", new {page ="home"}) 

Это дает мне URL: localhost/Spinner?page=home и я определяю путь контроллера через QueryString после page в _Layout.cshtml, как Request.QueryString["page"] и перенаправить его соответствующим образом (в данном случае, HomeController)

Теперь моя проблема возникает, когда мне нужно отправить вход на другой контроллер, который я хочу вызвать.

Рассмотрим, StudentController

Public ActionResult Index(int id) { /*my code goes here*/ return View()} 

мне нужен URL, чтобы быть в формате localhost/Spinner?page=Student?id=2. Я использовал @Url.Action вместе с другими методами, с которыми у меня есть приличное знание, и не смог сгенерировать URL-адрес в вышеуказанном формате, тем самым завязав его в течение последних нескольких дней.

Так,

  1. Может быть, можно генерировать URL в формате, описанном выше?
  2. Если да, то это правильный способ добиться чего-то, и есть ли лучший способ?

Любое предложение/совет/помощь будут оценены.

Заранее спасибо.

+0

«локальный/Spinner? Page = Student? Id = 2 "должен быть" localhost/Spinner? Page = Student & id = 2 " – hazjack

+0

В чем причина всего этого? Почему главная страница, если у вас есть _Layout.cshtml? – greenhoorn

+0

@ greenhoorn Два мастера и оба были сделаны различными организациями. Один из них остался, а другой был удален и предоставлен внутренней ИТ-команде – San

ответ

-1

Я предлагаю вам добавить новый маршрут и поместить его в верхней части маршрута конфигурации в папке App_Start, как:

routes.MapRoute( "spinner", "Spinner/Index/{page}/{parm1}/{parm2}", new { action = "Index", controller = "Spinner" } );

Затем вы можете получить параметры в своем действии, как:

public ActionResult Index(string page, string parm1, string parm2) {...} 

Смежные вопросы