Spark中此MVC视图代码的等效语法是什么?

时间:2009-06-17 02:41:27

标签: asp.net-mvc spark-view-engine

我在使用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>

3 个答案:

答案 0 :(得分: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>

和&lt; test if =“”&gt;变异应该都可以工作并生成几乎相同的代码:

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 :(得分:1)

尝试使用if =“”语法

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

答案 2 :(得分:1)

感谢路易斯在Twitter上的帮助,问题在于部分被调用的是.ascx文件,而不是.spark文件。我还没有删除旧的,未转换的.ascx文件。一旦删除了Reply.ascx,一切都按预期工作。