Asp.net mvc 3 Asp.Net MVC 3-@Html.Action赢得';t呈现/返回任何HTML

Asp.net mvc 3 Asp.Net MVC 3-@Html.Action赢得';t呈现/返回任何HTML,asp.net-mvc-3,razor,partials,renderaction,Asp.net Mvc 3,Razor,Partials,Renderaction,今天我将一个相当新的项目从ViewPages转移到Razor,一切似乎都进展顺利。除了我尝试使用Html.Action来呈现一个用户控件,它不会呈现任何东西 因此,我有一个共享的/_Layout.cshtml文件,该文件在Home/Index.cshtml中引用 Index.cshtml具有以下功能: <article> @Html.Action("LatestBlogsMainPanelWidget", "Blogs") ... </article> @Act

今天我将一个相当新的项目从ViewPages转移到Razor,一切似乎都进展顺利。除了我尝试使用Html.Action来呈现一个用户控件,它不会呈现任何东西

因此,我有一个共享的/_Layout.cshtml文件,该文件在Home/Index.cshtml中引用

Index.cshtml具有以下功能:

<article>

@Html.Action("LatestBlogsMainPanelWidget", "Blogs")

...

</article>

@Action(“LatestBlogsMainPanelWidget”,“Blogs”)
...
我已经在BlogsController中设置了陷阱,所以我知道有人要求这样做。我还知道正在返回一个模型,视图引擎正在查找最新的BlogsMainPanelWidget,甚至正在运行一些伪Razor语法代码: @{ var s=“你好”; }

但该文件中的纯html无法进入浏览器。我也尝试过其他(以前工作过的)部分,它们也不会出现(页面上的查看源代码确认它不存在)

我也试着用它来代替 @{Html.RenderAction(…);}没有成功。@HTML.Action的任意一侧都会显示HTML,所以我知道Index.cshtml显示正确

更奇怪的是_Layout文件也有Html.Action命令,它们看起来很好

我真的不确定还要检查什么,或者如何确认管道正在获取HTML。有人能帮忙吗


谢谢 我已经确认,对有问题的操作注释掉OutputCache过滤器已经解决了这个问题

我不知道这个问题是否适用于页面级缓存,因为我觉得它没有什么用处。

试试这个:


@{Html.RenderAction(“LatestBlogsMainPanelWidget”,“Blogs”);}

在局部视图上放置一个Layout=null,它将正常工作。

在搜索此问题的解决方案时,我发现了Html.Action和Html.RenderAction的三个不正确呈现的度量问题。请确认您是否正确完成了以下工作

  • 在部分视图或视图中,您已定义了@{Layout=null;}
  • 使用returnPartialView而不是View
  • 使用[ChildActionOnly]属性装饰您的动作

  • 我希望通过应用以上所有步骤,您可以解决您的问题。

    该操作的视图是否位于正确的位置?没关系,我只是看到了我要找的那一行。好奇者,好奇者。我刚刚安装了MVC3的RC2,部分级别的缓存又开始工作了,所有的html.actions都再次显示出来。好吧,抱歉打扰了!你可以在最初的问题中看到,我已经试过了。不管怎样,谢谢。这正是我需要的。这对我用[ChildActionOnly]属性修饰的操作很有用。事实上,我刚刚了解到,我只需要将return视图切换到return PartialView,而不是在中添加它。