3

我在使用 WebForms 视图引擎的 MVC 项目中得到了这段代码,我正在尝试将其转换为 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>
4

3 回答 3

6

<% 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>

并且 <test if=""> 变体应该都可以工作并产生几乎相同的代码:

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

也许尝试输出 ${UserService.IsAuthenticated} 和 ${Model.Post.IsDeleted} 以绝对确定条件并不总是正确的?


好的 - 在另一种不正确的媒体中确认......“回复”部分是否可能是 WebForms 视图,如回复.ascx 或回复.aspx?WebForms 有一个问题,默认情况下它的输出将直接转到当前的 HttpContext 响应输出,这使得很难将这些部分与假脱机或分层输出的视图引擎交错。

在 Spark 示例中,有一种方法可以解决这个问题,但这有点棘手。

于 2009-06-17T04:53:47.667 回答
1

尝试使用 test if="" 语法

<test if="UserService.IsAuthenticated && !Model.Post.IsDeleted">
    ${Html.RenderPartial("Reply", new ReplyViewModel { Id=Model.Post.PostId, CssClass="respond" });}
</test>
于 2009-06-17T03:09:20.400 回答
1

感谢 Louis 在 Twitter 上的帮助,问题在于被调用的部分是 .ascx 文件而不是 .spark 文件。我还没有删除旧的、未转换的 .ascx 文件。删除 Reply.ascx 后,一切都按预期进行。

于 2009-06-17T05:06:11.537 回答