Asp.net mvc 什么是MVC子操作?

Asp.net mvc 什么是MVC子操作?,asp.net-mvc,Asp.net Mvc,我在MVC(基础书籍)中读到了儿童行为,但我真的不知道它是什么 有人能解释一下这些方法吗?菲尔·哈克在书中很好地解释了这一点。基本上,子操作是一个控制器操作,可以使用Html从视图中调用。操作helper: @Html.Action("SomeActionName", "SomeController") 然后,此操作将在视图中的指定位置执行并呈现其输出。与分部的区别在于分部只包含指定的标记,除主操作外,没有其他操作正在执行 因此,您基本上拥有接收请求并呈现视图的主操作,但在此视图中,您可以呈现

我在MVC(基础书籍)中读到了儿童行为,但我真的不知道它是什么


有人能解释一下这些方法吗?

菲尔·哈克在书中很好地解释了这一点。基本上,子操作是一个控制器操作,可以使用
Html从视图中调用。操作
helper:

@Html.Action("SomeActionName", "SomeController")
然后,此操作将在视图中的指定位置执行并呈现其输出。与分部的区别在于分部只包含指定的标记,除主操作外,没有其他操作正在执行

因此,您基本上拥有接收请求并呈现视图的主操作,但在此视图中,您可以呈现多个子操作,这些子操作将经历独立的MVC生命周期,并最终呈现输出。所有这些都将在单个HTTP请求的上下文中发生


子操作对于创建整个可重用的小部件非常有用,这些小部件可以嵌入到视图中,并贯穿其独立的MVC生命周期。

Phil Haack在中很好地解释了这一点。基本上,子操作是一个控制器操作,可以使用
Html从视图中调用。操作
helper:

@Html.Action("SomeActionName", "SomeController")
然后,此操作将在视图中的指定位置执行并呈现其输出。与分部的区别在于分部只包含指定的标记,除主操作外,没有其他操作正在执行

因此,您基本上拥有接收请求并呈现视图的主操作,但在此视图中,您可以呈现多个子操作,这些子操作将经历独立的MVC生命周期,并最终呈现输出。所有这些都将在单个HTTP请求的上下文中发生


子操作对于创建整个可重用小部件非常有用,这些小部件可以嵌入到您的视图中,并经历其独立的MVC生命周期。

子操作是从视图内部使用html.renderaction或html.action helper调用的操作。

子操作是使用视图内部的html.renderaction或html.action助手。

子操作是通过@html.action()在视图中调用的操作方法

范例 我的控制器上有一个操作

要从视图调用此操作,我将使用:

@Html.Action("Time", new { time = DateTime.Now }) 

子操作是通过@Html.action()在视图中调用的操作方法

范例 我的控制器上有一个操作

要从视图调用此操作,我将使用:

@Html.Action("Time", new { time = DateTime.Now }) 

可以调用非子操作frim视图吗?实际上,当您调用
Html.Partial
时,该操作将自动成为子操作。如果您使用
[ChildActionOnly]
属性装饰动作,那么您只能将其用作子动作-您无法直接访问它。我认为一个区别是动作方法可以从任何视图调用?对吗?是的,但只能从视图调用。您也可以在浏览器地址栏中键入url,然后调用标准控制器操作。@DarinDimitrov这就是我想要的答案!常规的“动作”和“儿童动作”之间没有真正的区别。我认为属性是一个要求,但它似乎更像是一个安全特性,因此一个操作只能用于呈现部分,无法从浏览器直接公开访问。可以调用非子操作frim view吗?实际上,当您调用
Html时。部分
操作将自动成为子操作。如果您使用
[ChildActionOnly]
属性装饰动作,那么您只能将其用作子动作-您无法直接访问它。我认为一个区别是动作方法可以从任何视图调用?对吗?是的,但只能从视图调用。您也可以在浏览器地址栏中键入url,然后调用标准控制器操作。@DarinDimitrov这就是我想要的答案!常规的“动作”和“儿童动作”之间没有真正的区别。我认为属性是一项要求,但它似乎更像是一项安全功能,因此只能用于呈现部分的操作无法从浏览器直接公开访问。不充分的示例,没有解释:子操作需要重用一些表示逻辑,在本例中,显示模板更好地完成了哪些操作。示例不充分,没有解释:子操作需要重用一些表示逻辑,而在本例中,显示模板更好地完成了这些操作。