我读过MVC(基础书)中的儿童行为,但我真的不知道它是什么?
有人可以解释一下这些方法吗?
答案 0 :(得分:93)
Phil Haack在this blog post中很好地解释了这一点。基本上,子操作是一个控制器操作,您可以使用Html.Action
帮助程序从视图中调用它:
@Html.Action("SomeActionName", "SomeController")
然后,此操作将在视图中的指定位置执行并呈现其输出。与Partial的区别在于partial只包含指定的标记,没有其他动作执行而不是主动作。
因此,您基本上拥有接收请求并呈现视图的主要操作,但是从此视图中您可以呈现多个子操作,这些操作将通过其独立的MVC生命周期并最终呈现输出。所有这些都将在单个HTTP请求的上下文中发生。
子操作对于创建可嵌入到视图中并通过其独立MVC生命周期的整个可重用小部件非常有用。
答案 1 :(得分:7)
子操作是通过在视图内部使用html.renderaction或html.action帮助程序调用的操作。
答案 2 :(得分:2)
子动作是通过 @ Html.Action()在视图中调用的动作方法。
实施例 我的控制器上有一个动作。
public DateTime Time(DateTime time)
{
return time;
}
要从查看调用此操作,我将使用:
@Html.Action("Time", new { time = DateTime.Now })
答案 3 :(得分:0)
要注意的点:
子操作方法将不会响应URL请求。如果尝试这样做,则会抛出运行时错误,指出-子操作只能由子请求访问。
可以通过使用“ Action()”和“ RenderAction()” html帮助器从视图发出子请求来调用子操作方法。
动作方法不需要具有[ChildActionOnly]属性用作子动作,但是可以使用此属性来防止是否要防止由于用户而调用该动作方法请求。
子操作通常与部分视图相关联,尽管这不是强制性的。
子操作方法与NonAction方法的不同之处在于,不能使用Action()或RenderAction()帮助器来调用NonAction方法。
使用子操作方法,可以缓存视图的某些部分。这是儿童动作方法的主要优点。