Pergunta

Eu tenho esse código em um projeto MVC usando os WebForms visualizar motor e eu estou tentando convertê-lo sobre a Spark. Como posso condicionalmente chamar um parcial e passá-lo visualizar os dados?

<% if (UserService.IsAuthenticated && !Model.Post.IsDeleted) { %>
    <% Html.RenderPartial("Reply", new ReplyViewModel { Id=Model.Post.PostId, CssClass="respond" }); %>
<% } %>

Tentámos este (sem sucesso, ele processa a parcial antes todos os outros conteúdos):

<if condition="UserService.IsAuthenticated && !Model.Post.IsDeleted">
    #Html.RenderPartial("Reply", new ReplyViewModel { Id=Model.Post.PostId, CssClass="respond" });
</if>
Foi útil?

Solução

O

<% if (UserService.IsAuthenticated && !Model.Post.IsDeleted) { %>
    <% Html.RenderPartial("Reply", new ReplyViewModel { Id=Model.Post.PostId, CssClass="respond" }); %>
<% } %>

e

<if condition="UserService.IsAuthenticated && !Model.Post.IsDeleted">
    #Html.RenderPartial("Reply", new ReplyViewModel { Id=Model.Post.PostId, CssClass="respond" });
</if>

eo variação devem trabalhar e produzir código quase idêntico:

if (UserService.IsAuthenticated && !Model.Post.IsDeleted) 
{ 
    Html.RenderPartial("Reply", new ReplyViewModel { Id=Model.Post.PostId, CssClass="respond" });
}

Talvez tente produzir $ {UserService.IsAuthenticated} e $ {Model.Post.IsDeleted} para ser absolutamente certo de que a condição não é sempre verdade?


Ok - confirmada em outro meio que é incorreta ... É possível o "Responder" parcial é um WebForms ver como Reply.ascx ou Reply.aspx? Há um problema com WebForms na medida em que de saída por padrão irá diretamente para a corrente de saída de resposta HttpContext, o que torna difícil para intercalar essas parciais com motores vista que carretel ou camada de saída.

Há uma maneira de contornar isso em uma das amostras de ignição, mas é um pouco complicado.

Outras dicas

Tente com o teste if = "" sintaxe

<test if="UserService.IsAuthenticated && !Model.Post.IsDeleted">
    ${Html.RenderPartial("Reply", new ReplyViewModel { Id=Model.Post.PostId, CssClass="respond" });}
</test>

Graças à ajuda Louis' no Twitter, o problema era que o ser parcial chamado era um arquivo .ascx e não um arquivo .spark. Eu ainda não tinha eliminado o velho, ficheiro.ascx não convertido. Uma vez que o Reply.ascx foi excluído, tudo funcionou como esperado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top