Czy jest możliwe, aby kontroler ASP.NET MVC tworzył nowe wystąpienie innego kontrolera i skutecznie delegował na to rezonans?.NET Kontroler instancji MVC wewnątrz innego kontrolera
Załóżmy na przykład, że mam dwa kontrolery w/controllers/katalogu:
public class HomeController : Controller
{
public ActionResult Index()
{
var otherController = new OtherController();
return otherController.ShowNumberOfThings(100);
}
}
public class OtherController : Controller
{
public ActionResult ShowNumberOfThings(int index)
{
return View(index);
}
}
... i widok nazywany views/Inne/ShowNumberOfThings.aspx:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<int>" %>
Number of things: <%= Model.ToString() %>
Kiedy I hit URL:
Chcę być obecny ed ze strony, która brzmi:
„wiele rzeczy: 100”
Chciałbym, aby móc utrzymywać tymczasowe dane między przekierowań kontrolera bez zmuszony do korzystania z obiektu sesji (TempData [ „”] Zastosowania obiekt sesji dla przekierowań między kontrolerami). Moja prawdziwa światowa sprawa ma złożony obiekt, który wymaga przekazania (nie tylko int), więc używanie adresu URL/ciasteczka nie wchodzi w grę, a stan sesji jest nie-nie.
Przynajmniej w WebForms moglibyśmy używać Server.Transfer i utrzymywać dowolny stan w kolekcji HttpContext.Items. W MVC jedyną opcją jaką widzę jest wywołanie metody kontrolera bezpośrednio przekazującej wymagane argumenty.
W tej chwili występują problemy z próbą rozwiązania folderu widoku, ponieważ "kontekst" nadal działa w HomeController.
Zgaduję, gdzie idę z tym próbuje osaczyć ASP.NET MVC działając jak FrontContoller.
Wszelkie pomysły?
EDIT
W końcu musieliśmy serialise wszystko do sesji i użyć jej. Szkoda, ale słyszałem, że MVC2 będzie obsługiwać obiekty szeregujące w ViewState.
Zrobiłem coś bardzo podobnego do tego, co działało bez zarzutu - model powinien być poprawnie przekazany, więc co to jest w kontekście, który stanowi problem? – Keith