Я экспериментирую с MvcContrib subcontrollers. Глядя на примере в источнике, ваш родительский контроллер (HomeController) принимает меры, которые принимают дки (FirstLevelSubController) в качестве параметра:Использование субколлекторов ASP.NET MVC с параметрами действия?
public class HomeController : Controller
{
public ActionResult Index(FirstLevelSubController firstLevel)
{
ViewData["Title"] = "Home Page";
return View();
}
}
В связи Хоум индекс, вы называете ViewData.Get как это Отрендерьте дки и это мнение:
<div style="border:dotted 1px blue">
<%=ViewData["text"] %>
<% ViewData.Get<Action>("firstLevel").Invoke(); %>
</div>
действия подрегула ныряет называется (игнорировать secondlevelcontroller, пример просто демонстрируют, как вы можете вложить несколько subcontrollers):
public class FirstLevelSubController : SubController
{
public ViewResult FirstLevel(SecondLevelSubController secondLevel)
{
ViewData["text"] = "I am a first level controller";
return View();
}
}
Все это работает, представление субконтроллера отображается в родительском представлении.
Но что, если мне нужно другие параметры в действии моего домашнего контроллера? Например, я могу хотеть передать Guid к индексного метода моего контроллера:
public class HomeController : Controller
{
public ActionResult Index(Guid someId, FirstLevelSubController firstLevel)
{
//Do something with someId
ViewData["Title"] = "Home Page";
return View();
}
}
Там, кажется, не будет какой-либо способ сделать <% ViewData.Get («Firstlevel») Invoke();. %> с параметрами. Так что я не могу понять, как сделать ссылку на мой контроллер с другого контроллера передачи параметра, как это:
Html.ActionLink<HomeController>(x => x.Index(someThing.Id), "Edit")
Возможно, я приближающегося это неправильный путь? Как еще я могу заставить мой родительский контроллер использовать субконтроллер, но также делать интересные вещи, такие как принимать параметры/аргументы?
Хорошее место - похоже, что SubControllers действительно устарели - я пробовал RenderAction, и он просто прекрасно работает в первый раз :) Спасибо, я бы потратил дни, пытаясь заставить это работать! –
Страница не найдена! –
@AbhishekMehta: [Эта ссылка на Wayback Machine] (http://web.archive.org/web/20100529051721/http://mhinze.com/passing-objects-to-subcontrollers) должна быть достаточной на данный момент. Также обратите внимание на последний абзац в моем ответе. –