Какой эквивалентный синтаксис для этого кода представления MVC в Spark? - PullRequest
3 голосов
/ 17 июня 2009

У меня есть этот код в проекте MVC с использованием движка представления WebForms, и я пытаюсь преобразовать его в Spark. Как я могу условно вызвать партиал и передать ему просмотр данных?

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

Попробовал это (безрезультатно, рендерит частичное перед всем другим контентом):

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

Ответы [ 3 ]

6 голосов
/ 17 июня 2009

The

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

и

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

и вариант должны работать и генерировать практически идентичный код:

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

Возможно, попробуйте вывести $ {UserService.IsAuthenticated} и $ {Model.Post.IsDeleted}, чтобы быть абсолютно уверенным, что условие не всегда выполняется?


Хорошо - подтверждено на другом носителе, что это неверно ... Возможно ли, что часть "Ответить" является представлением WebForms, таким как Reply.ascx или Reply.aspx? Существует проблема с WebForms, заключающаяся в том, что ее выходные данные по умолчанию будут напрямую переходить к текущему выходному ответу HttpContext, что затрудняет чередование этих партиалов с механизмами представления, которые спулируют или выводят слой.

Есть способ обойти это в одном из примеров Spark, но это немного сложно.

1 голос
/ 17 июня 2009

Благодаря помощи Луи в Twitter проблема заключалась в том, что вызываемый фрагмент был файлом .ascx, а не файлом .spark. Я еще не удалил старый не преобразованный файл .ascx. После того как Reply.ascx был удален, все заработало как положено.

1 голос
/ 17 июня 2009

Попробуйте с синтаксисом теста if = ""

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