c # mvc отображает действие контроллера - по имени строки - PullRequest
0 голосов
/ 27 ноября 2009

У меня есть хак с фреймворком MVC, чтобы попробовать некоторые идеи концепции. Это не производственный код ..

Во всяком случае - у меня есть анонимный контроллер. Я хотел бы выполнить действие на этом контроллере, однако у меня есть только имя действия этого контроллера, доступное в виде строки.

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

Спасибо всем!

1009 * Франко *

Ответы [ 3 ]

0 голосов
/ 27 ноября 2009

У вас есть несколько вариантов:

  • Asp.net MVC 2 Beta 2 (раньше был частью MVC Futures ), в который встроено RenderAction() для этих целей
  • аналогичная вещь реализована в MVC Contrib с субконтроллерами
  • или вы можете иметь PartialRequest(), как объяснено здесь

Но вы должны быть осторожны, поскольку во всех них есть проблемы.

Хотя. Ваш анонимный контроллер, вероятно, будет основным препятствием. Но это зависит от того, как он у вас есть и как вы к нему обращаетесь. Было бы проще, если бы вы показали нам некоторый код, чтобы мы могли дать вам более подробное представление о вашей проблеме.

0 голосов
/ 27 ноября 2009

Хотя я считаю, что ваша идея не может быть оптимальной, вы можете использовать этот код:

var controller = new SomeController(null);
var controllerContext = new ControllerContext(new HttpContextWrapper(System.Web.HttpContext.Current),new RouteData(),controller);
var actionInvoker = new ControllerActionInvoker();
actionInvoker.InvokeAction(controllerContext, "Test");

Если вам нужно больше подробностей о том, как работает этот код, посмотрите System.Web.Mvc в Reflector.

0 голосов
/ 27 ноября 2009

Не уверен насчет анонимного контроллера ?? Но ...

Если вы посмотрите на проект MVC futures на codeplex, у них есть Html.RenderAction

Доброжелательность,

Dan

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