只在MVC中使用儿童活动

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

什么时候使用该属性?ChildActionOnly是吗?什么是ChildAction在什么情况下,使用此属性限制操作?

提问于
用户回答回答于

ChildActionOnly,需要创建在调用操作时呈现的内容。子操作通常与部分视图相关联,尽管这不是强制性的。

  1. 儿童行动允许通过视图中的代码进行受限访问
  2. 特定页面URL的状态信息实现。示例:PayPageURL(仅支付一次)剃刀语法允许调用特定操作为条件
用户回答回答于

属性注释后,操作方法只能作为子方法从视图中调用。

有两个操作方法:index()和MyDateTime()以及相应的视图:Index.cshtml和MyDateTime.cshtml。HomeController.cs

public class HomeController : Controller
 {
    public ActionResult Index()
    {
        ViewBag.Message = "This is from Index()";
        var model = DateTime.Now;
        return View(model);
    }

    [ChildActionOnly]
    public PartialViewResult MyDateTime()
    {
        ViewBag.Message = "This is from MyDateTime()";

        var model = DateTime.Now;
        return PartialView(model);
    } 
}

这是Index.cshtml.

@model DateTime
@{
    ViewBag.Title = "Index";
}
<h2>
    Index</h2>
<div>
    This is the index view for Home : @Model.ToLongTimeString()
</div>
<div>
    @Html.Action("MyDateTime")  // Calling the partial view: MyDateTime().
</div>

<div>
    @ViewBag.Message
</div>

这是MyDateTime.cshtml部分视图。

@model DateTime

<p>
This is the child action result: @Model.ToLongTimeString()
<br />
@ViewBag.Message
</p>
 if you run the application and do this request http://localhost:57803/home/mydatetime
 The result will be Server Error like so: 

这意味着您不能直接调用部分视图。但是可以通过Index()视图调用它,如Index.cshtml中所示。

     @Html.Action("MyDateTime")  // Calling the partial view: MyDateTime().

If you remove [ChildActionOnly] and do the same request http://localhost:57803/home/mydatetime it allows you to get the mydatetime partial view result:
This is the child action result. 12:53:31 PM 
This is from MyDateTime()

扫码关注云+社区