带有Razor的Html.RenderPartial()语法


95

之所以有效,是因为它以字符串形式返回部分视图渲染的结果:

@Html.Partial("Path/to/my/partial/view")

但是我更喜欢使用RenderPartial,似乎我需要写:

@{Html.RenderPartial("Path/to/my/partial/view");}

代替:

@Html.RenderPartial("Path/to/my/partial/view");

要使其正常工作。错误信息:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

如果有更好的方法代替@{...}只为一个方法调用打开代码块?


尝试使用时会遇到什么错误@Html.RenderPartial()
Neil Knight

我已在帖子中添加了消息。我知道为什么它显示错误@ Html.RenderPartial()大致解析为<%?:@ Html.RenderPartial()?>这是错误的,而不是<?Html.RenderPartial(); ?>,但我正在寻找解决方法。
artvolk

相关:Html.Partial与Html.RenderPartial和Html.Action与Html.RenderAction。顺便说一句,为什么您更喜欢使用RenderPartial
保罗莫雷蒂

Answers:


142
  • RenderPartial()是写入响应流的void方法。在C#中,void方法需要a ;,因此必须用括起来{ }

  • Partial()是一个返回MvcHtmlString的方法。在Razor中,您可以调用一个属性或方法来返回仅带有@前缀的此类字符串,以将其与页面上的普通HTML区别开来。


1
为什么您更喜欢使用Html.RenderPartial而不是Html.Partial?如果出于某种原因,您希望/需要使用Html.RenderPartial,则没有解决方法-这就是语法。
Ofer Zelig

5
我使用它是因为它应该更有效(因为它不会返回巨大的字符串)。
artvolk

45

Html.RenderPartial()是一个无效方法-您可以通过将鼠标置于代码中对RenderPartial的调用上来检查该方法是否为无效方法,您将看到文本(扩展名)void HtmlHelper.RenderPartial ...

无效方法在调用代码的末尾需要使用分号。

在Webforms视图引擎中,您应该将Html.RenderPartial()调用包含在蜂ing <%%>中

像这样

<% Html.RenderPartial("Path/to/my/partial/view"); %>

当您使用Razor视图引擎时,等效项是

@{Html.RenderPartial("Path/to/my/partial/view");}

5
“蜜蜂叮咬”-这是第一次(对我来说?)
JoeBrockhaus

9
@Html.Partial("NameOfPartialView")

我想使用Html.RenderPartial(),这就是为什么我问这个问题。详细信息:“在性能方面,有人声称直接渲染到输出流会更好(这就是为什么它们从空的RenderPartial开始的原因)。” 从这里开始stackoverflow.com/a/2729851/118810
artvolk 2012年

0

如果使用这种格式,则需要链接到另一页或另一个link.partial视图,该视图主要用于将html文件从一个位置重新放置到另一个位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.