Sintaxe Html.RenderPartial () com Razor

95

Isso funciona porque retorna o resultado da renderização parcial da visualização em uma string:

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

Mas prefiro usar RenderPartiale parece que preciso escrever:

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

ao invés de:

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

Para fazer funcionar. Mensagem de erro:

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

Existe alguma maneira melhor em vez de abrir o bloco de código @{...}apenas para uma chamada de método?

Artvolk
fonte
Qual é o erro que você obtém ao tentar usar@Html.RenderPartial()
Neil Knight
Eu adicionei uma mensagem ao meu post. Eu entendo por que mostra um erro @ Html.RenderPartial () é analisado aproximadamente como <%?: @ Html.RenderPartial ()?> Que está errado e não como <? Html.RenderPartial (); ?>, mas estou procurando uma solução alternativa.
artvolk
Relacionado: Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction . BTW, por que você prefere usar RenderPartial?
Paolo Moretti

Respostas:

142
  • RenderPartial()é um método vazio que grava no fluxo de resposta. Um método void, em C #, precisa de um ;e, portanto, deve ser incluído por { }.

  • Partial()é um método que retorna um MvcHtmlString . No Razor, você pode chamar uma propriedade ou método que retorna tal string com apenas um @prefixo para distingui-lo do HTML puro que você tem na página.

Ofer Zelig
fonte
1
Por que você prefere usar Html.RenderPartial em vez de Html.Partial? Se você, por algum motivo, deseja / precisa usar Html.RenderPartial, não há solução alternativa - essa é a sintaxe.
Ofer Zelig
5
Eu uso porque deve ser mais eficaz (porque não retorna uma string enorme).
artvolk de
45

Html.RenderPartial () é um método void - você pode verificar se um método é um método void colocando o mouse sobre a chamada para RenderPartial em seu código e você verá o texto (extensão) void HtmlHelper.RenderPartial ...

Os métodos nulos requerem um ponto e vírgula no final do código de chamada.

No mecanismo de visualização do Webforms, você teria encerrado sua chamada Html.RenderPartial () dentro das picadas de abelha <%%>

igual a

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

quando você está usando o motor de visualização Razor o equivalente é

@{Html.RenderPartial("Path/to/my/partial/view");}
Nicholas Murray
fonte
5
"picadas de abelha" - essa é a primeira (para mim?)
JoeBrockhaus
9
@Html.Partial("NameOfPartialView")
RouR
fonte
Eu gostaria de usar Html.RenderPartial(), é por isso que fiz esta pergunta. Os detalhes: "Em termos de desempenho, foi afirmado que renderizar diretamente para o fluxo de saída é melhor (por isso eles usaram o vazio RenderPartial para começar)." from here stackoverflow.com/a/2729851/118810
artvolk
0

Se você receber esse formato, ele será como um link para outra página ou outro link. Visualização parcial usada principalmente para renderizar os arquivos html de um lugar para outro.

Sankar
fonte