代码之家  ›  专栏  ›  技术社区  ›  John Sheehan

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

  •  3
  • John Sheehan  · 技术社区  · 15 年前

    我在一个使用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 回复  |  直到 15 年前
        1
  •  6
  •   loudej    15 年前

    这个

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

    并且,如果“variation”,则<测试应全部工作并生成几乎相同的代码:

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

    可能尝试输出$userservice.isAuthenticated和$model.post.isDeleted以绝对确定条件并不总是正确的?


    好的-在另一个不正确的介质中确认…“reply”部分是否可能是类似reply.ascx或reply.aspx的webforms视图?webforms存在一个问题,它的默认输出将直接转到当前的httpcontext响应输出,这使得很难将这些部分与spool或layer输出的视图引擎交错。

    有一种方法可以在其中一个火花样本中解决这个问题,但这有点棘手。

        2
  •  1
  •   user434917    15 年前

    尝试测试if=“”语法

    <test if="UserService.IsAuthenticated && !Model.Post.IsDeleted">
        ${Html.RenderPartial("Reply", new ReplyViewModel { Id=Model.Post.PostId, CssClass="respond" });}
    </test>
    
        3
  •  1
  •   John Sheehan    15 年前

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

    推荐文章