2009-06-17 53 views
3

我在使用WebForms视图引擎的MVC项目中获得了此代码,并试图将其转换为Spark。我如何有条件地调用一个部分并传递它的视图数据?Spark中此MVC视图代码的等效语法是什么?

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

回答

6

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

and

<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" }); 
} 

也许尝试输出$ {UserService.IsAuthenticated}和$ {Model.Post.IsDeleted }绝对肯定这种情况并非总是如此?


好了 - 另一种介质中这是不正确证实...是否有可能在“回复​​”部分是一个WebForms的观看像Reply.ascx或Reply.aspx? WebForms存在一个问题,默认情况下它的输出将直接转到当前的HttpContext响应输出,这使得将这些部分与后台处理或图层输出的视图引擎交织困难。

有一种方法可以解决Spark样本中的一个问题,但它有点棘手。

1

尝试与测试如果= “” 语法

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

感谢您的想法。但这并不奏效。同样的结果。 – 2009-06-17 03:18:54

1

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

相关问题