質問

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>
役に立ちましたか?

解決

The

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

および<!> 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}を出力して、条件が常に真であるとは限らないことを絶対に確認してください。


わかりました-間違っている別のメディアで確認されました... <!> quot; Reply <!> quot; partialはReply.ascxやReply.aspxのようなWebFormsビューですか? WebFormsには、デフォルトで現在のHttpContext応答出力に直接出力されるため、出力をスプールまたはレイヤー化するビューエンジンでこれらのパーシャルをインターリーブすることが困難になるという問題があります。

Sparkサンプルの1つでそれを回避する方法がありますが、少し注意が必要です。

他のヒント

テストで試してくださいif = <!> quot; <!> quot;構文

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

TwitterでのLouisの助けのおかげで、問題は、呼び出される部分が.sparkファイルではなく.ascxファイルであるということでした。古い未変換の.ascxファイルはまだ削除していません。 Reply.ascxが削除されると、すべてが期待どおりに機能しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top