今天,我一直将一个相当新的项目从视图页面转移到剃须刀,一切似乎都很好。除了我试图使用HTML.Action渲染用户控件,并且不会呈现任何内容。

因此,我有一个共享/_layout.cshtml文件,该文件在home/index.cshtml中引用

index.cshtml具有以下内容:

<article>

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

...

</article>

我已经将陷阱放在Blogscontroller中,所以我知道这是被要求的。我还知道正在返回一个模型,视图引擎正在发现最新的BlogSmainPanelWidget,甚至某些虚拟剃须刀语法代码也正在运行: @{var s =“ hello”; }

但是该文件中的普通html并未进入浏览器。我也尝试过其他(以前工作的)部分,它们也不会出现(页面上的视图源确认它不存在)。

我还尝试过代替 @{html.renderaction(...); } 没有成功。 @html.Action的任何一侧都出现了HTML,因此我知道index.cshtml正在正确显示。

更奇怪的是,_layout文件也具有html.action命令,它们 看起来不错。

我真的不确定还要检查什么,或者如何确认管道正在获得HTML。谁能提供帮助?

谢谢!

有帮助吗?

解决方案 3

大脑是一件有趣的事情,尽管昨天花了几个小时花了几个小时,但我的狗在半夜唤醒了我,让我的潜意识偶然发现了答案。

如果这让其他人陷入困境,我就不会感到惊讶。我没有提到,因为我没有意识到我正在使用类似于史蒂夫·桑德森(Steve Sanderson)设计的部分缓存系统。突然让我感到震惊的是,这可能是原因,因为据我所知,剃刀页面的流量处理要比WebForm页面少得多。缓存过滤器可能没有做需要做的事情,也可能在正确的时间做。

我已经确认,对有关操作的输出滤波器进行评论已解决了问题。

我不知道这个问题是否对页面级缓存是正确的,因为这不是我发现有用的。

其他提示

在部分视图上放置一个布局= null,它可以正常工作。

尝试这个:

@{html.renderaction(“最新blogsmainpanelwidget”,“ blogs”);};}

在搜索此问题的解决方案时,我发现了三个措施问题,无法适当渲染HTML.Action和HTML.RenderAction。请验证您是否正确或不正确地完成了工作。

  1. 在您的部分视图或您已定义的视图中 @{layout = null;}.
  2. 使用返回 部分视图 代替 看法 .
  3. 用您的动作装饰 Child Actionally 属性。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top