我在使用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>
答案 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,一切都按预期工作。