gpt4 book ai didi

asp.net-mvc - 使用带有 Action 参数的 ASP.NET MVC 子 Controller ?

转载 作者:行者123 更新时间:2023-12-04 07:01:20 28 4
gpt4 key购买 nike

我正在试验 MvcContrib subcontrollers .查看源代码中的示例,您的父 Controller (HomeController) 执行将子 Controller (FirstLevelSubController) 作为参数的操作:

public class HomeController : Controller
{
public ActionResult Index(FirstLevelSubController firstLevel)
{
ViewData["Title"] = "Home Page";
return View();
}
}

在 Home 的索引 View 中,您像这样调用 ViewData.Get 来呈现子 Controller 及其 View :
<div style="border:dotted 1px blue">
<%=ViewData["text"] %>
<% ViewData.Get<Action>("firstLevel").Invoke(); %>
</div>

子 Controller 的 Action 被调用(忽略二级 Controller ,这个例子只是演示了如何嵌套多个子 Controller ):
public class FirstLevelSubController : SubController
{
public ViewResult FirstLevel(SecondLevelSubController secondLevel)
{
ViewData["text"] = "I am a first level controller";
return View();
}
}

这一切都有效,子 Controller 的 View 在父 View 中呈现。

但是如果我需要怎么办 其他参数在我的家庭 Controller 的行动中?例如,我可能想将 Guid 传递给我的 Controller 的 index 方法:
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(); %> 带参数。所以我不知道如何从另一个传递如下参数的 Controller 链接到我的 Controller :
Html.ActionLink<HomeController>(x => x.Index(someThing.Id), "Edit")

也许我以错误的方式接近这个?我还能如何让我的父 Controller 使用子 Controller ,而且还能做一些有趣的事情,比如接受参数/参数?

最佳答案

看看这篇博文:

将对象传递给子 Controller
http://mhinze.com/passing-objects-to-subcontrollers/

请注意,不推荐使用子 Controller 。它们已被替换为 RenderAction .

关于asp.net-mvc - 使用带有 Action 参数的 ASP.NET MVC 子 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786087/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com