如何调用操作并输出其结果,就好像它是“用户控件”一样

本文关键字:用户 一样 用户控件 控件 调用 何调用 操作 结果 输出 | 更新日期: 2023-09-27 18:30:37

在我的_Layout.cshtml文件中,我想调用这样的东西:

    <div id="content">
        <div id="left-wrapper" class="box">
            @Html.Action("FreeThisWeek", "Products")
            @RenderBody()
        </div>
    </div>

这是我的产品控制器文件:

[ChildActionOnly]
public ActionResult FreeThisWeek()
{
    //Some code that fetches the data and builds the model.
    var model = BuildFreeProducts();
    return View(model);
}

如果我尝试运行此代码,我会得到一个StackOverflowException,因为操作返回 View() 请求布局,运行返回 View() 的操作,依此类推。

可以理解,但是我如何完成正确的代码?

在哪里编写将此数据模型与我编写的 HTML 复合的视图?

如何调用操作并输出其结果,就好像它是“用户控件”一样

尝试返回PartialView("yourview",model)。确保您返回的视图未使用此页面作为布局。您可以使用要返回的视图顶部的@{Layout=null}来指定该值。

您将在FreeThisWeek操作中返回视图,并在视图中再次使用该_Layout。所以它变得递归。

转到FreeThisWeek视图并将布局设置为 null

@{
   Layout=null;
}