我正在尝试在Site.Master页面上使用donut-caching来处理用户登录和购物车等内容,以便我们可以将OutputCache放在我们应用程序中一些资源更密集的页面上。
目前,我正在使用标签,然后在后面的代码中用静态方法写出html。
<asp:Substitution ID="Substitution1" runat="server" MethodName="RenderUserLogin"/>
public static string RenderUserLogin( HttpContext incomingContext )
{
System.Text.StringBuilder osb = new System.Text.StringBuilder();
osb.Append( "<p>" );
if ( incomingContext.User.Identity.IsAuthenticated
&& !string.IsNullOrEmpty( incomingContext.User.Identity.Name ) )
{
osb.Append( "Hi, <span class=\"name\">" );
osb.Append( "<a href=\"/Users/Show\">" );
// ... etc. ...
return osb.ToString();
}
我宁愿在局部视图(.ascx)中使用html代码并将其渲染为字符串,因为我真的不喜欢将javascript使用的特定html元素隐藏在编译代码中。
我看过这篇文章,看起来这是一个有效的想法,可以修改为将部分呈现为字符串: Render Partial through Controller
是否有更简洁的方法可以将部分字符串呈现为字符串而无需通过控制器?