我在使用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>
有帮助吗?

解决方案

<% 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 = <!> quot; <!> quot; <!> gt;变异应该都可以工作并生成几乎相同的代码:

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

也许尝试输出$ {UserService.IsAuthenticated}和$ {Model.Post.IsDeleted}以确定条件并非总是如此?


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

有一种方法可以解决其中一个Spark样本,但这有点棘手。

其他提示

尝试使用测试if = <!> quot; <!> quot;语法

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top