找回密码
 立即注册
首页 业界区 业界 ASP.NET MVC 性能优化:RenderPartial性能优化

ASP.NET MVC 性能优化:RenderPartial性能优化

搁胱 2025-5-29 20:35:24
背景

  在ASP.NET MVC中,HtmlHelper的扩展方法RenderPartial为我们使用UserControl带来了极大的方便,当我们指定一个UserControl时,RenderPartial会在当前View文件夹下查找相应的UserControl,如果没有找到则会到Shared文件夹下查找。然后在使用RenderPartial方法有一些性能方面的考虑,值得我们去关注。
  设想有这样一个场景,一篇文章有很多个评论,在页面中我们需要呈现出一个评论列表,自然我们会定义一个评论的UserControl,如下代码所示:
  Code 1:
  1. <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Comment>" %>
  2. <%@ Import Namespace="TerryLee.MvcPerformance01.Models" %>
  3. <p>
  4.    <%
  5.    <%
  6.    <%
  7.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  8.    %>    foreach (var comment in Model.Comments)
  9.    <%
  10.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  11.    %>    {
  12.    <%
  13.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  14.    %>    <%
  15.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  16.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  17.    <%
  18.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  19.    %>    }
  20.    <%
  21.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  22.    %>  %>  foreach (var comment in Model.Comments)
  23.    <%
  24.    <%
  25.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  26.    %>    foreach (var comment in Model.Comments)
  27.    <%
  28.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  29.    %>    {
  30.    <%
  31.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  32.    %>    <%
  33.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  34.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  35.    <%
  36.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  37.    %>    }
  38.    <%
  39.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  40.    %>  %>  {
  41.    <%
  42.    <%
  43.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  44.    %>    foreach (var comment in Model.Comments)
  45.    <%
  46.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  47.    %>    {
  48.    <%
  49.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  50.    %>    <%
  51.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  52.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  53.    <%
  54.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  55.    %>    }
  56.    <%
  57.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  58.    %>  %>   <%
  59.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  60.    %> <%
  61.    <%
  62.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  63.    %>    foreach (var comment in Model.Comments)
  64.    <%
  65.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  66.    %>    {
  67.    <%
  68.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  69.    %>    <%
  70.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  71.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  72.    <%
  73.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  74.    %>    }
  75.    <%
  76.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  77.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  78.    <%
  79.    <%
  80.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  81.    %>    foreach (var comment in Model.Comments)
  82.    <%
  83.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  84.    %>    {
  85.    <%
  86.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  87.    %>    <%
  88.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  89.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  90.    <%
  91.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  92.    %>    }
  93.    <%
  94.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  95.    %>  %>  }
  96.   %> ID: <%=Model.ID %> <br />
  97.    <%
  98.    <%
  99.    <%
  100.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  101.    %>    foreach (var comment in Model.Comments)
  102.    <%
  103.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  104.    %>    {
  105.    <%
  106.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  107.    %>    <%
  108.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  109.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  110.    <%
  111.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  112.    %>    }
  113.    <%
  114.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  115.    %>  %>  foreach (var comment in Model.Comments)
  116.    <%
  117.    <%
  118.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  119.    %>    foreach (var comment in Model.Comments)
  120.    <%
  121.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  122.    %>    {
  123.    <%
  124.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  125.    %>    <%
  126.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  127.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  128.    <%
  129.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  130.    %>    }
  131.    <%
  132.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  133.    %>  %>  {
  134.    <%
  135.    <%
  136.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  137.    %>    foreach (var comment in Model.Comments)
  138.    <%
  139.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  140.    %>    {
  141.    <%
  142.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  143.    %>    <%
  144.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  145.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  146.    <%
  147.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  148.    %>    }
  149.    <%
  150.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  151.    %>  %>   <%
  152.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  153.    %> <%
  154.    <%
  155.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  156.    %>    foreach (var comment in Model.Comments)
  157.    <%
  158.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  159.    %>    {
  160.    <%
  161.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  162.    %>    <%
  163.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  164.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  165.    <%
  166.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  167.    %>    }
  168.    <%
  169.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  170.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  171.    <%
  172.    <%
  173.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  174.    %>    foreach (var comment in Model.Comments)
  175.    <%
  176.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  177.    %>    {
  178.    <%
  179.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  180.    %>    <%
  181.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  182.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  183.    <%
  184.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  185.    %>    }
  186.    <%
  187.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  188.    %>  %>  }
  189.   %> Author: <%=Model.Author %> <br />
  190.    <%
  191.    <%
  192.    <%
  193.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  194.    %>    foreach (var comment in Model.Comments)
  195.    <%
  196.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  197.    %>    {
  198.    <%
  199.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  200.    %>    <%
  201.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  202.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  203.    <%
  204.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  205.    %>    }
  206.    <%
  207.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  208.    %>  %>  foreach (var comment in Model.Comments)
  209.    <%
  210.    <%
  211.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  212.    %>    foreach (var comment in Model.Comments)
  213.    <%
  214.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  215.    %>    {
  216.    <%
  217.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  218.    %>    <%
  219.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  220.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  221.    <%
  222.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  223.    %>    }
  224.    <%
  225.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  226.    %>  %>  {
  227.    <%
  228.    <%
  229.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  230.    %>    foreach (var comment in Model.Comments)
  231.    <%
  232.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  233.    %>    {
  234.    <%
  235.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  236.    %>    <%
  237.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  238.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  239.    <%
  240.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  241.    %>    }
  242.    <%
  243.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  244.    %>  %>   <%
  245.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  246.    %> <%
  247.    <%
  248.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  249.    %>    foreach (var comment in Model.Comments)
  250.    <%
  251.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  252.    %>    {
  253.    <%
  254.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  255.    %>    <%
  256.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  257.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  258.    <%
  259.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  260.    %>    }
  261.    <%
  262.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  263.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  264.    <%
  265.    <%
  266.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  267.    %>    foreach (var comment in Model.Comments)
  268.    <%
  269.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  270.    %>    {
  271.    <%
  272.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  273.    %>    <%
  274.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  275.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  276.    <%
  277.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  278.    %>    }
  279.    <%
  280.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  281.    %>  %>  }
  282.   %> Description: <%= Model.Description %>
  283. </p>
  284. <hr />
复制代码
在页面中呈现评论列表,代码非常简单,仅仅是遍历所有的评论而已:
Code 2:
  1.    <%
  2.    <%
  3.    <%
  4.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  5.    %>    foreach (var comment in Model.Comments)
  6.    <%
  7.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  8.    %>    {
  9.    <%
  10.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  11.    %>    <%
  12.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  13.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  14.    <%
  15.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  16.    %>    }
  17.    <%
  18.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  19.    %>  %>  foreach (var comment in Model.Comments)
  20.    <%
  21.    <%
  22.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  23.    %>    foreach (var comment in Model.Comments)
  24.    <%
  25.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  26.    %>    {
  27.    <%
  28.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  29.    %>    <%
  30.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  31.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  32.    <%
  33.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  34.    %>    }
  35.    <%
  36.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  37.    %>  %>  {
  38.    <%
  39.    <%
  40.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  41.    %>    foreach (var comment in Model.Comments)
  42.    <%
  43.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  44.    %>    {
  45.    <%
  46.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  47.    %>    <%
  48.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  49.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  50.    <%
  51.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  52.    %>    }
  53.    <%
  54.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  55.    %>  %>   <%
  56.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  57.    %> <%
  58.    <%
  59.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  60.    %>    foreach (var comment in Model.Comments)
  61.    <%
  62.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  63.    %>    {
  64.    <%
  65.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  66.    %>    <%
  67.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  68.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  69.    <%
  70.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  71.    %>    }
  72.    <%
  73.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  74.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  75.    <%
  76.    <%
  77.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  78.    %>    foreach (var comment in Model.Comments)
  79.    <%
  80.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  81.    %>    {
  82.    <%
  83.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  84.    %>    <%
  85.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  86.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  87.    <%
  88.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  89.    %>    }
  90.    <%
  91.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  92.    %>  %>  }
  93.   %>
复制代码
运行后效果如下,可以看到正确的输出了评论:
1.png
 
性能优化1

然而当我们同时输出200条评论的时候, 却要花费大量的时间,用Stopwatch来测量一下会发现,输出200条评论花费的时间基本在210ms左右,也就是说平均每条评论的输出花费了1ms。我们不妨看一下ASP.NET MVC的源代码,在WebFormViewEngine中当查找UserControl时,遵循如下查找模式:
Code 3:
  1. public WebFormViewEngine() {   <%
  2.    <%
  3.    <%
  4.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  5.    %>    foreach (var comment in Model.Comments)
  6.    <%
  7.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  8.    %>    {
  9.    <%
  10.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  11.    %>    <%
  12.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  13.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  14.    <%
  15.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  16.    %>    }
  17.    <%
  18.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  19.    %>  %>  foreach (var comment in Model.Comments)
  20.    <%
  21.    <%
  22.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  23.    %>    foreach (var comment in Model.Comments)
  24.    <%
  25.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  26.    %>    {
  27.    <%
  28.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  29.    %>    <%
  30.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  31.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  32.    <%
  33.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  34.    %>    }
  35.    <%
  36.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  37.    %>  %>  {
  38.    <%
  39.    <%
  40.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  41.    %>    foreach (var comment in Model.Comments)
  42.    <%
  43.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  44.    %>    {
  45.    <%
  46.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  47.    %>    <%
  48.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  49.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  50.    <%
  51.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  52.    %>    }
  53.    <%
  54.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  55.    %>  %>   <%
  56.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  57.    %> <%
  58.    <%
  59.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  60.    %>    foreach (var comment in Model.Comments)
  61.    <%
  62.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  63.    %>    {
  64.    <%
  65.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  66.    %>    <%
  67.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  68.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  69.    <%
  70.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  71.    %>    }
  72.    <%
  73.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  74.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  75.    <%
  76.    <%
  77.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  78.    %>    foreach (var comment in Model.Comments)
  79.    <%
  80.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  81.    %>    {
  82.    <%
  83.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  84.    %>    <%
  85.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  86.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  87.    <%
  88.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  89.    %>    }
  90.    <%
  91.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  92.    %>  %>  }
  93.   %> MasterLocationFormats = new[] {   <%
  94.    <%
  95.    <%
  96.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  97.    %>    foreach (var comment in Model.Comments)
  98.    <%
  99.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  100.    %>    {
  101.    <%
  102.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  103.    %>    <%
  104.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  105.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  106.    <%
  107.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  108.    %>    }
  109.    <%
  110.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  111.    %>  %>  foreach (var comment in Model.Comments)
  112.    <%
  113.    <%
  114.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  115.    %>    foreach (var comment in Model.Comments)
  116.    <%
  117.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  118.    %>    {
  119.    <%
  120.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  121.    %>    <%
  122.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  123.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  124.    <%
  125.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  126.    %>    }
  127.    <%
  128.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  129.    %>  %>  {
  130.    <%
  131.    <%
  132.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  133.    %>    foreach (var comment in Model.Comments)
  134.    <%
  135.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  136.    %>    {
  137.    <%
  138.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  139.    %>    <%
  140.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  141.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  142.    <%
  143.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  144.    %>    }
  145.    <%
  146.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  147.    %>  %>   <%
  148.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  149.    %> <%
  150.    <%
  151.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  152.    %>    foreach (var comment in Model.Comments)
  153.    <%
  154.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  155.    %>    {
  156.    <%
  157.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  158.    %>    <%
  159.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  160.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  161.    <%
  162.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  163.    %>    }
  164.    <%
  165.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  166.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  167.    <%
  168.    <%
  169.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  170.    %>    foreach (var comment in Model.Comments)
  171.    <%
  172.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  173.    %>    {
  174.    <%
  175.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  176.    %>    <%
  177.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  178.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  179.    <%
  180.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  181.    %>    }
  182.    <%
  183.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  184.    %>  %>  }
  185.   %>   <%
  186.    <%
  187.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  188.    %>    foreach (var comment in Model.Comments)
  189.    <%
  190.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  191.    %>    {
  192.    <%
  193.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  194.    %>    <%
  195.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  196.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  197.    <%
  198.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  199.    %>    }
  200.    <%
  201.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  202.    %>  %> <%
  203.    <%
  204.    <%
  205.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  206.    %>    foreach (var comment in Model.Comments)
  207.    <%
  208.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  209.    %>    {
  210.    <%
  211.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  212.    %>    <%
  213.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  214.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  215.    <%
  216.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  217.    %>    }
  218.    <%
  219.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  220.    %>  %>  foreach (var comment in Model.Comments)
  221.    <%
  222.    <%
  223.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  224.    %>    foreach (var comment in Model.Comments)
  225.    <%
  226.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  227.    %>    {
  228.    <%
  229.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  230.    %>    <%
  231.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  232.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  233.    <%
  234.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  235.    %>    }
  236.    <%
  237.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  238.    %>  %>  {
  239.    <%
  240.    <%
  241.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  242.    %>    foreach (var comment in Model.Comments)
  243.    <%
  244.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  245.    %>    {
  246.    <%
  247.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  248.    %>    <%
  249.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  250.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  251.    <%
  252.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  253.    %>    }
  254.    <%
  255.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  256.    %>  %>   <%
  257.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  258.    %> <%
  259.    <%
  260.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  261.    %>    foreach (var comment in Model.Comments)
  262.    <%
  263.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  264.    %>    {
  265.    <%
  266.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  267.    %>    <%
  268.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  269.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  270.    <%
  271.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  272.    %>    }
  273.    <%
  274.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  275.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  276.    <%
  277.    <%
  278.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  279.    %>    foreach (var comment in Model.Comments)
  280.    <%
  281.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  282.    %>    {
  283.    <%
  284.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  285.    %>    <%
  286.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  287.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  288.    <%
  289.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  290.    %>    }
  291.    <%
  292.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  293.    %>  %>  }
  294.   %> "~/Views/{1}/{0}.master",   <%
  295.    <%
  296.    <%
  297.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  298.    %>    foreach (var comment in Model.Comments)
  299.    <%
  300.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  301.    %>    {
  302.    <%
  303.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  304.    %>    <%
  305.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  306.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  307.    <%
  308.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  309.    %>    }
  310.    <%
  311.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  312.    %>  %>  foreach (var comment in Model.Comments)
  313.    <%
  314.    <%
  315.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  316.    %>    foreach (var comment in Model.Comments)
  317.    <%
  318.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  319.    %>    {
  320.    <%
  321.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  322.    %>    <%
  323.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  324.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  325.    <%
  326.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  327.    %>    }
  328.    <%
  329.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  330.    %>  %>  {
  331.    <%
  332.    <%
  333.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  334.    %>    foreach (var comment in Model.Comments)
  335.    <%
  336.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  337.    %>    {
  338.    <%
  339.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  340.    %>    <%
  341.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  342.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  343.    <%
  344.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  345.    %>    }
  346.    <%
  347.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  348.    %>  %>   <%
  349.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  350.    %> <%
  351.    <%
  352.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  353.    %>    foreach (var comment in Model.Comments)
  354.    <%
  355.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  356.    %>    {
  357.    <%
  358.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  359.    %>    <%
  360.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  361.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  362.    <%
  363.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  364.    %>    }
  365.    <%
  366.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  367.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  368.    <%
  369.    <%
  370.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  371.    %>    foreach (var comment in Model.Comments)
  372.    <%
  373.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  374.    %>    {
  375.    <%
  376.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  377.    %>    <%
  378.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  379.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  380.    <%
  381.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  382.    %>    }
  383.    <%
  384.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  385.    %>  %>  }
  386.   %>   <%
  387.    <%
  388.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  389.    %>    foreach (var comment in Model.Comments)
  390.    <%
  391.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  392.    %>    {
  393.    <%
  394.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  395.    %>    <%
  396.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  397.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  398.    <%
  399.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  400.    %>    }
  401.    <%
  402.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  403.    %>  %> <%
  404.    <%
  405.    <%
  406.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  407.    %>    foreach (var comment in Model.Comments)
  408.    <%
  409.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  410.    %>    {
  411.    <%
  412.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  413.    %>    <%
  414.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  415.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  416.    <%
  417.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  418.    %>    }
  419.    <%
  420.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  421.    %>  %>  foreach (var comment in Model.Comments)
  422.    <%
  423.    <%
  424.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  425.    %>    foreach (var comment in Model.Comments)
  426.    <%
  427.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  428.    %>    {
  429.    <%
  430.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  431.    %>    <%
  432.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  433.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  434.    <%
  435.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  436.    %>    }
  437.    <%
  438.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  439.    %>  %>  {
  440.    <%
  441.    <%
  442.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  443.    %>    foreach (var comment in Model.Comments)
  444.    <%
  445.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  446.    %>    {
  447.    <%
  448.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  449.    %>    <%
  450.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  451.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  452.    <%
  453.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  454.    %>    }
  455.    <%
  456.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  457.    %>  %>   <%
  458.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  459.    %> <%
  460.    <%
  461.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  462.    %>    foreach (var comment in Model.Comments)
  463.    <%
  464.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  465.    %>    {
  466.    <%
  467.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  468.    %>    <%
  469.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  470.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  471.    <%
  472.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  473.    %>    }
  474.    <%
  475.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  476.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  477.    <%
  478.    <%
  479.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  480.    %>    foreach (var comment in Model.Comments)
  481.    <%
  482.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  483.    %>    {
  484.    <%
  485.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  486.    %>    <%
  487.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  488.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  489.    <%
  490.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  491.    %>    }
  492.    <%
  493.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  494.    %>  %>  }
  495.   %> "~/Views/Shared/{0}.master"   <%
  496.    <%
  497.    <%
  498.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  499.    %>    foreach (var comment in Model.Comments)
  500.    <%
  501.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  502.    %>    {
  503.    <%
  504.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  505.    %>    <%
  506.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  507.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  508.    <%
  509.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  510.    %>    }
  511.    <%
  512.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  513.    %>  %>  foreach (var comment in Model.Comments)
  514.    <%
  515.    <%
  516.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  517.    %>    foreach (var comment in Model.Comments)
  518.    <%
  519.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  520.    %>    {
  521.    <%
  522.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  523.    %>    <%
  524.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  525.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  526.    <%
  527.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  528.    %>    }
  529.    <%
  530.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  531.    %>  %>  {
  532.    <%
  533.    <%
  534.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  535.    %>    foreach (var comment in Model.Comments)
  536.    <%
  537.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  538.    %>    {
  539.    <%
  540.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  541.    %>    <%
  542.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  543.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  544.    <%
  545.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  546.    %>    }
  547.    <%
  548.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  549.    %>  %>   <%
  550.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  551.    %> <%
  552.    <%
  553.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  554.    %>    foreach (var comment in Model.Comments)
  555.    <%
  556.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  557.    %>    {
  558.    <%
  559.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  560.    %>    <%
  561.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  562.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  563.    <%
  564.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  565.    %>    }
  566.    <%
  567.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  568.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  569.    <%
  570.    <%
  571.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  572.    %>    foreach (var comment in Model.Comments)
  573.    <%
  574.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  575.    %>    {
  576.    <%
  577.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  578.    %>    <%
  579.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  580.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  581.    <%
  582.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  583.    %>    }
  584.    <%
  585.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  586.    %>  %>  }
  587.   %> };   <%
  588.    <%
  589.    <%
  590.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  591.    %>    foreach (var comment in Model.Comments)
  592.    <%
  593.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  594.    %>    {
  595.    <%
  596.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  597.    %>    <%
  598.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  599.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  600.    <%
  601.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  602.    %>    }
  603.    <%
  604.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  605.    %>  %>  foreach (var comment in Model.Comments)
  606.    <%
  607.    <%
  608.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  609.    %>    foreach (var comment in Model.Comments)
  610.    <%
  611.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  612.    %>    {
  613.    <%
  614.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  615.    %>    <%
  616.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  617.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  618.    <%
  619.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  620.    %>    }
  621.    <%
  622.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  623.    %>  %>  {
  624.    <%
  625.    <%
  626.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  627.    %>    foreach (var comment in Model.Comments)
  628.    <%
  629.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  630.    %>    {
  631.    <%
  632.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  633.    %>    <%
  634.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  635.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  636.    <%
  637.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  638.    %>    }
  639.    <%
  640.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  641.    %>  %>   <%
  642.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  643.    %> <%
  644.    <%
  645.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  646.    %>    foreach (var comment in Model.Comments)
  647.    <%
  648.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  649.    %>    {
  650.    <%
  651.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  652.    %>    <%
  653.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  654.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  655.    <%
  656.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  657.    %>    }
  658.    <%
  659.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  660.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  661.    <%
  662.    <%
  663.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  664.    %>    foreach (var comment in Model.Comments)
  665.    <%
  666.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  667.    %>    {
  668.    <%
  669.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  670.    %>    <%
  671.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  672.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  673.    <%
  674.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  675.    %>    }
  676.    <%
  677.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  678.    %>  %>  }
  679.   %> ViewLocationFormats = new[] {   <%
  680.    <%
  681.    <%
  682.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  683.    %>    foreach (var comment in Model.Comments)
  684.    <%
  685.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  686.    %>    {
  687.    <%
  688.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  689.    %>    <%
  690.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  691.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  692.    <%
  693.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  694.    %>    }
  695.    <%
  696.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  697.    %>  %>  foreach (var comment in Model.Comments)
  698.    <%
  699.    <%
  700.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  701.    %>    foreach (var comment in Model.Comments)
  702.    <%
  703.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  704.    %>    {
  705.    <%
  706.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  707.    %>    <%
  708.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  709.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  710.    <%
  711.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  712.    %>    }
  713.    <%
  714.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  715.    %>  %>  {
  716.    <%
  717.    <%
  718.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  719.    %>    foreach (var comment in Model.Comments)
  720.    <%
  721.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  722.    %>    {
  723.    <%
  724.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  725.    %>    <%
  726.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  727.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  728.    <%
  729.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  730.    %>    }
  731.    <%
  732.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  733.    %>  %>   <%
  734.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  735.    %> <%
  736.    <%
  737.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  738.    %>    foreach (var comment in Model.Comments)
  739.    <%
  740.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  741.    %>    {
  742.    <%
  743.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  744.    %>    <%
  745.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  746.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  747.    <%
  748.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  749.    %>    }
  750.    <%
  751.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  752.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  753.    <%
  754.    <%
  755.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  756.    %>    foreach (var comment in Model.Comments)
  757.    <%
  758.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  759.    %>    {
  760.    <%
  761.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  762.    %>    <%
  763.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  764.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  765.    <%
  766.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  767.    %>    }
  768.    <%
  769.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  770.    %>  %>  }
  771.   %>   <%
  772.    <%
  773.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  774.    %>    foreach (var comment in Model.Comments)
  775.    <%
  776.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  777.    %>    {
  778.    <%
  779.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  780.    %>    <%
  781.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  782.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  783.    <%
  784.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  785.    %>    }
  786.    <%
  787.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  788.    %>  %> <%
  789.    <%
  790.    <%
  791.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  792.    %>    foreach (var comment in Model.Comments)
  793.    <%
  794.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  795.    %>    {
  796.    <%
  797.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  798.    %>    <%
  799.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  800.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  801.    <%
  802.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  803.    %>    }
  804.    <%
  805.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  806.    %>  %>  foreach (var comment in Model.Comments)
  807.    <%
  808.    <%
  809.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  810.    %>    foreach (var comment in Model.Comments)
  811.    <%
  812.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  813.    %>    {
  814.    <%
  815.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  816.    %>    <%
  817.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  818.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  819.    <%
  820.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  821.    %>    }
  822.    <%
  823.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  824.    %>  %>  {
  825.    <%
  826.    <%
  827.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  828.    %>    foreach (var comment in Model.Comments)
  829.    <%
  830.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  831.    %>    {
  832.    <%
  833.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  834.    %>    <%
  835.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  836.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  837.    <%
  838.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  839.    %>    }
  840.    <%
  841.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  842.    %>  %>   <%
  843.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  844.    %> <%
  845.    <%
  846.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  847.    %>    foreach (var comment in Model.Comments)
  848.    <%
  849.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  850.    %>    {
  851.    <%
  852.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  853.    %>    <%
  854.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  855.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  856.    <%
  857.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  858.    %>    }
  859.    <%
  860.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  861.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  862.    <%
  863.    <%
  864.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  865.    %>    foreach (var comment in Model.Comments)
  866.    <%
  867.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  868.    %>    {
  869.    <%
  870.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  871.    %>    <%
  872.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  873.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  874.    <%
  875.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  876.    %>    }
  877.    <%
  878.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  879.    %>  %>  }
  880.   %> "~/Views/{1}/{0}.aspx",   <%
  881.    <%
  882.    <%
  883.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  884.    %>    foreach (var comment in Model.Comments)
  885.    <%
  886.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  887.    %>    {
  888.    <%
  889.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  890.    %>    <%
  891.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  892.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  893.    <%
  894.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  895.    %>    }
  896.    <%
  897.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  898.    %>  %>  foreach (var comment in Model.Comments)
  899.    <%
  900.    <%
  901.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  902.    %>    foreach (var comment in Model.Comments)
  903.    <%
  904.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  905.    %>    {
  906.    <%
  907.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  908.    %>    <%
  909.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  910.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  911.    <%
  912.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  913.    %>    }
  914.    <%
  915.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  916.    %>  %>  {
  917.    <%
  918.    <%
  919.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  920.    %>    foreach (var comment in Model.Comments)
  921.    <%
  922.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  923.    %>    {
  924.    <%
  925.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  926.    %>    <%
  927.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  928.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  929.    <%
  930.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  931.    %>    }
  932.    <%
  933.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  934.    %>  %>   <%
  935.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  936.    %> <%
  937.    <%
  938.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  939.    %>    foreach (var comment in Model.Comments)
  940.    <%
  941.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  942.    %>    {
  943.    <%
  944.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  945.    %>    <%
  946.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  947.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  948.    <%
  949.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  950.    %>    }
  951.    <%
  952.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  953.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  954.    <%
  955.    <%
  956.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  957.    %>    foreach (var comment in Model.Comments)
  958.    <%
  959.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  960.    %>    {
  961.    <%
  962.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  963.    %>    <%
  964.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  965.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  966.    <%
  967.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  968.    %>    }
  969.    <%
  970.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  971.    %>  %>  }
  972.   %>   <%
  973.    <%
  974.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  975.    %>    foreach (var comment in Model.Comments)
  976.    <%
  977.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  978.    %>    {
  979.    <%
  980.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  981.    %>    <%
  982.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  983.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  984.    <%
  985.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  986.    %>    }
  987.    <%
  988.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  989.    %>  %> <%
  990.    <%
  991.    <%
  992.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  993.    %>    foreach (var comment in Model.Comments)
  994.    <%
  995.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  996.    %>    {
  997.    <%
  998.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  999.    %>    <%
  1000.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1001.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1002.    <%
  1003.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1004.    %>    }
  1005.    <%
  1006.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1007.    %>  %>  foreach (var comment in Model.Comments)
  1008.    <%
  1009.    <%
  1010.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1011.    %>    foreach (var comment in Model.Comments)
  1012.    <%
  1013.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1014.    %>    {
  1015.    <%
  1016.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1017.    %>    <%
  1018.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1019.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1020.    <%
  1021.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1022.    %>    }
  1023.    <%
  1024.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1025.    %>  %>  {
  1026.    <%
  1027.    <%
  1028.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1029.    %>    foreach (var comment in Model.Comments)
  1030.    <%
  1031.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1032.    %>    {
  1033.    <%
  1034.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1035.    %>    <%
  1036.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1037.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1038.    <%
  1039.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1040.    %>    }
  1041.    <%
  1042.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1043.    %>  %>   <%
  1044.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1045.    %> <%
  1046.    <%
  1047.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1048.    %>    foreach (var comment in Model.Comments)
  1049.    <%
  1050.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1051.    %>    {
  1052.    <%
  1053.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1054.    %>    <%
  1055.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1056.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1057.    <%
  1058.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1059.    %>    }
  1060.    <%
  1061.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1062.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  1063.    <%
  1064.    <%
  1065.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1066.    %>    foreach (var comment in Model.Comments)
  1067.    <%
  1068.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1069.    %>    {
  1070.    <%
  1071.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1072.    %>    <%
  1073.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1074.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1075.    <%
  1076.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1077.    %>    }
  1078.    <%
  1079.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1080.    %>  %>  }
  1081.   %> "~/Views/{1}/{0}.ascx",   <%
  1082.    <%
  1083.    <%
  1084.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1085.    %>    foreach (var comment in Model.Comments)
  1086.    <%
  1087.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1088.    %>    {
  1089.    <%
  1090.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1091.    %>    <%
  1092.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1093.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1094.    <%
  1095.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1096.    %>    }
  1097.    <%
  1098.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1099.    %>  %>  foreach (var comment in Model.Comments)
  1100.    <%
  1101.    <%
  1102.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1103.    %>    foreach (var comment in Model.Comments)
  1104.    <%
  1105.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1106.    %>    {
  1107.    <%
  1108.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1109.    %>    <%
  1110.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1111.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1112.    <%
  1113.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1114.    %>    }
  1115.    <%
  1116.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1117.    %>  %>  {
  1118.    <%
  1119.    <%
  1120.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1121.    %>    foreach (var comment in Model.Comments)
  1122.    <%
  1123.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1124.    %>    {
  1125.    <%
  1126.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1127.    %>    <%
  1128.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1129.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1130.    <%
  1131.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1132.    %>    }
  1133.    <%
  1134.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1135.    %>  %>   <%
  1136.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1137.    %> <%
  1138.    <%
  1139.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1140.    %>    foreach (var comment in Model.Comments)
  1141.    <%
  1142.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1143.    %>    {
  1144.    <%
  1145.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1146.    %>    <%
  1147.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1148.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1149.    <%
  1150.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1151.    %>    }
  1152.    <%
  1153.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1154.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  1155.    <%
  1156.    <%
  1157.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1158.    %>    foreach (var comment in Model.Comments)
  1159.    <%
  1160.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1161.    %>    {
  1162.    <%
  1163.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1164.    %>    <%
  1165.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1166.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1167.    <%
  1168.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1169.    %>    }
  1170.    <%
  1171.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1172.    %>  %>  }
  1173.   %>   <%
  1174.    <%
  1175.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1176.    %>    foreach (var comment in Model.Comments)
  1177.    <%
  1178.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1179.    %>    {
  1180.    <%
  1181.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1182.    %>    <%
  1183.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1184.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1185.    <%
  1186.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1187.    %>    }
  1188.    <%
  1189.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1190.    %>  %> <%
  1191.    <%
  1192.    <%
  1193.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1194.    %>    foreach (var comment in Model.Comments)
  1195.    <%
  1196.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1197.    %>    {
  1198.    <%
  1199.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1200.    %>    <%
  1201.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1202.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1203.    <%
  1204.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1205.    %>    }
  1206.    <%
  1207.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1208.    %>  %>  foreach (var comment in Model.Comments)
  1209.    <%
  1210.    <%
  1211.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1212.    %>    foreach (var comment in Model.Comments)
  1213.    <%
  1214.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1215.    %>    {
  1216.    <%
  1217.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1218.    %>    <%
  1219.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1220.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1221.    <%
  1222.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1223.    %>    }
  1224.    <%
  1225.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1226.    %>  %>  {
  1227.    <%
  1228.    <%
  1229.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1230.    %>    foreach (var comment in Model.Comments)
  1231.    <%
  1232.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1233.    %>    {
  1234.    <%
  1235.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1236.    %>    <%
  1237.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1238.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1239.    <%
  1240.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1241.    %>    }
  1242.    <%
  1243.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1244.    %>  %>   <%
  1245.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1246.    %> <%
  1247.    <%
  1248.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1249.    %>    foreach (var comment in Model.Comments)
  1250.    <%
  1251.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1252.    %>    {
  1253.    <%
  1254.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1255.    %>    <%
  1256.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1257.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1258.    <%
  1259.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1260.    %>    }
  1261.    <%
  1262.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1263.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  1264.    <%
  1265.    <%
  1266.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1267.    %>    foreach (var comment in Model.Comments)
  1268.    <%
  1269.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1270.    %>    {
  1271.    <%
  1272.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1273.    %>    <%
  1274.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1275.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1276.    <%
  1277.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1278.    %>    }
  1279.    <%
  1280.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1281.    %>  %>  }
  1282.   %> "~/Views/Shared/{0}.aspx",   <%
  1283.    <%
  1284.    <%
  1285.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1286.    %>    foreach (var comment in Model.Comments)
  1287.    <%
  1288.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1289.    %>    {
  1290.    <%
  1291.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1292.    %>    <%
  1293.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1294.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1295.    <%
  1296.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1297.    %>    }
  1298.    <%
  1299.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1300.    %>  %>  foreach (var comment in Model.Comments)
  1301.    <%
  1302.    <%
  1303.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1304.    %>    foreach (var comment in Model.Comments)
  1305.    <%
  1306.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1307.    %>    {
  1308.    <%
  1309.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1310.    %>    <%
  1311.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1312.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1313.    <%
  1314.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1315.    %>    }
  1316.    <%
  1317.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1318.    %>  %>  {
  1319.    <%
  1320.    <%
  1321.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1322.    %>    foreach (var comment in Model.Comments)
  1323.    <%
  1324.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1325.    %>    {
  1326.    <%
  1327.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1328.    %>    <%
  1329.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1330.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1331.    <%
  1332.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1333.    %>    }
  1334.    <%
  1335.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1336.    %>  %>   <%
  1337.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1338.    %> <%
  1339.    <%
  1340.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1341.    %>    foreach (var comment in Model.Comments)
  1342.    <%
  1343.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1344.    %>    {
  1345.    <%
  1346.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1347.    %>    <%
  1348.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1349.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1350.    <%
  1351.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1352.    %>    }
  1353.    <%
  1354.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1355.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  1356.    <%
  1357.    <%
  1358.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1359.    %>    foreach (var comment in Model.Comments)
  1360.    <%
  1361.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1362.    %>    {
  1363.    <%
  1364.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1365.    %>    <%
  1366.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1367.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1368.    <%
  1369.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1370.    %>    }
  1371.    <%
  1372.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1373.    %>  %>  }
  1374.   %>   <%
  1375.    <%
  1376.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1377.    %>    foreach (var comment in Model.Comments)
  1378.    <%
  1379.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1380.    %>    {
  1381.    <%
  1382.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1383.    %>    <%
  1384.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1385.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1386.    <%
  1387.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1388.    %>    }
  1389.    <%
  1390.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1391.    %>  %> <%
  1392.    <%
  1393.    <%
  1394.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1395.    %>    foreach (var comment in Model.Comments)
  1396.    <%
  1397.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1398.    %>    {
  1399.    <%
  1400.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1401.    %>    <%
  1402.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1403.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1404.    <%
  1405.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1406.    %>    }
  1407.    <%
  1408.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1409.    %>  %>  foreach (var comment in Model.Comments)
  1410.    <%
  1411.    <%
  1412.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1413.    %>    foreach (var comment in Model.Comments)
  1414.    <%
  1415.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1416.    %>    {
  1417.    <%
  1418.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1419.    %>    <%
  1420.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1421.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1422.    <%
  1423.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1424.    %>    }
  1425.    <%
  1426.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1427.    %>  %>  {
  1428.    <%
  1429.    <%
  1430.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1431.    %>    foreach (var comment in Model.Comments)
  1432.    <%
  1433.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1434.    %>    {
  1435.    <%
  1436.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1437.    %>    <%
  1438.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1439.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1440.    <%
  1441.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1442.    %>    }
  1443.    <%
  1444.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1445.    %>  %>   <%
  1446.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1447.    %> <%
  1448.    <%
  1449.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1450.    %>    foreach (var comment in Model.Comments)
  1451.    <%
  1452.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1453.    %>    {
  1454.    <%
  1455.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1456.    %>    <%
  1457.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1458.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1459.    <%
  1460.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1461.    %>    }
  1462.    <%
  1463.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1464.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  1465.    <%
  1466.    <%
  1467.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1468.    %>    foreach (var comment in Model.Comments)
  1469.    <%
  1470.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1471.    %>    {
  1472.    <%
  1473.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1474.    %>    <%
  1475.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1476.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1477.    <%
  1478.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1479.    %>    }
  1480.    <%
  1481.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1482.    %>  %>  }
  1483.   %> "~/Views/Shared/{0}.ascx"   <%
  1484.    <%
  1485.    <%
  1486.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1487.    %>    foreach (var comment in Model.Comments)
  1488.    <%
  1489.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1490.    %>    {
  1491.    <%
  1492.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1493.    %>    <%
  1494.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1495.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1496.    <%
  1497.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1498.    %>    }
  1499.    <%
  1500.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1501.    %>  %>  foreach (var comment in Model.Comments)
  1502.    <%
  1503.    <%
  1504.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1505.    %>    foreach (var comment in Model.Comments)
  1506.    <%
  1507.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1508.    %>    {
  1509.    <%
  1510.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1511.    %>    <%
  1512.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1513.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1514.    <%
  1515.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1516.    %>    }
  1517.    <%
  1518.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1519.    %>  %>  {
  1520.    <%
  1521.    <%
  1522.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1523.    %>    foreach (var comment in Model.Comments)
  1524.    <%
  1525.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1526.    %>    {
  1527.    <%
  1528.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1529.    %>    <%
  1530.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1531.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1532.    <%
  1533.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1534.    %>    }
  1535.    <%
  1536.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1537.    %>  %>   <%
  1538.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1539.    %> <%
  1540.    <%
  1541.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1542.    %>    foreach (var comment in Model.Comments)
  1543.    <%
  1544.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1545.    %>    {
  1546.    <%
  1547.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1548.    %>    <%
  1549.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1550.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1551.    <%
  1552.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1553.    %>    }
  1554.    <%
  1555.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1556.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  1557.    <%
  1558.    <%
  1559.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1560.    %>    foreach (var comment in Model.Comments)
  1561.    <%
  1562.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1563.    %>    {
  1564.    <%
  1565.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1566.    %>    <%
  1567.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1568.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1569.    <%
  1570.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1571.    %>    }
  1572.    <%
  1573.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1574.    %>  %>  }
  1575.   %> };   <%
  1576.    <%
  1577.    <%
  1578.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1579.    %>    foreach (var comment in Model.Comments)
  1580.    <%
  1581.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1582.    %>    {
  1583.    <%
  1584.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1585.    %>    <%
  1586.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1587.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1588.    <%
  1589.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1590.    %>    }
  1591.    <%
  1592.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1593.    %>  %>  foreach (var comment in Model.Comments)
  1594.    <%
  1595.    <%
  1596.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1597.    %>    foreach (var comment in Model.Comments)
  1598.    <%
  1599.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1600.    %>    {
  1601.    <%
  1602.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1603.    %>    <%
  1604.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1605.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1606.    <%
  1607.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1608.    %>    }
  1609.    <%
  1610.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1611.    %>  %>  {
  1612.    <%
  1613.    <%
  1614.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1615.    %>    foreach (var comment in Model.Comments)
  1616.    <%
  1617.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1618.    %>    {
  1619.    <%
  1620.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1621.    %>    <%
  1622.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1623.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1624.    <%
  1625.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1626.    %>    }
  1627.    <%
  1628.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1629.    %>  %>   <%
  1630.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1631.    %> <%
  1632.    <%
  1633.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1634.    %>    foreach (var comment in Model.Comments)
  1635.    <%
  1636.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1637.    %>    {
  1638.    <%
  1639.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1640.    %>    <%
  1641.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1642.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1643.    <%
  1644.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1645.    %>    }
  1646.    <%
  1647.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1648.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  1649.    <%
  1650.    <%
  1651.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1652.    %>    foreach (var comment in Model.Comments)
  1653.    <%
  1654.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1655.    %>    {
  1656.    <%
  1657.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1658.    %>    <%
  1659.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1660.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  1661.    <%
  1662.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1663.    %>    }
  1664.    <%
  1665.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  1666.    %>  %>  }
  1667.   %> PartialViewLocationFormats = ViewLocationFormats;}
复制代码
所以如果我们在RenderPartial方法中,指定了UserControl的完全路径,是不是可以避免这个查找过程呢?修改Code 2代码如下所示:
Code 4:
  1.    <%
  2.    <%
  3.    <%
  4.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  5.    %>    foreach (var comment in Model.Comments)
  6.    <%
  7.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  8.    %>    {
  9.    <%
  10.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  11.    %>    <%
  12.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  13.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  14.    <%
  15.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  16.    %>    }
  17.    <%
  18.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  19.    %>  %>  foreach (var comment in Model.Comments)
  20.    <%
  21.    <%
  22.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  23.    %>    foreach (var comment in Model.Comments)
  24.    <%
  25.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  26.    %>    {
  27.    <%
  28.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  29.    %>    <%
  30.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  31.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  32.    <%
  33.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  34.    %>    }
  35.    <%
  36.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  37.    %>  %>  {
  38.    <%
  39.    <%
  40.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  41.    %>    foreach (var comment in Model.Comments)
  42.    <%
  43.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  44.    %>    {
  45.    <%
  46.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  47.    %>    <%
  48.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  49.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  50.    <%
  51.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  52.    %>    }
  53.    <%
  54.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  55.    %>  %>   <%
  56.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  57.    %> <%
  58.    <%
  59.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  60.    %>    foreach (var comment in Model.Comments)
  61.    <%
  62.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  63.    %>    {
  64.    <%
  65.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  66.    %>    <%
  67.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  68.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  69.    <%
  70.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  71.    %>    }
  72.    <%
  73.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  74.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  75.    <%
  76.    <%
  77.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  78.    %>    foreach (var comment in Model.Comments)
  79.    <%
  80.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  81.    %>    {
  82.    <%
  83.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  84.    %>    <%
  85.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  86.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  87.    <%
  88.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  89.    %>    }
  90.    <%
  91.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  92.    %>  %>  }
  93.   %>
复制代码
现在再测试一下会发现呈现200条评论的时间平均值保持在10ms左右,比前面的方式提升了近200ms。然而我们是否真的找到了解决问题的方法?ASP.NET MVC难道不对查找的View路径进行缓存?带着这样的疑问,我们在ASP.NET MVC源代码VirtualPathProviderViewEngine的构造函数中,找到这样一段代码:
Code 5:
  1. protected VirtualPathProviderViewEngine() {   <%
  2.    <%
  3.    <%
  4.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  5.    %>    foreach (var comment in Model.Comments)
  6.    <%
  7.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  8.    %>    {
  9.    <%
  10.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  11.    %>    <%
  12.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  13.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  14.    <%
  15.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  16.    %>    }
  17.    <%
  18.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  19.    %>  %>  foreach (var comment in Model.Comments)
  20.    <%
  21.    <%
  22.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  23.    %>    foreach (var comment in Model.Comments)
  24.    <%
  25.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  26.    %>    {
  27.    <%
  28.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  29.    %>    <%
  30.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  31.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  32.    <%
  33.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  34.    %>    }
  35.    <%
  36.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  37.    %>  %>  {
  38.    <%
  39.    <%
  40.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  41.    %>    foreach (var comment in Model.Comments)
  42.    <%
  43.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  44.    %>    {
  45.    <%
  46.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  47.    %>    <%
  48.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  49.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  50.    <%
  51.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  52.    %>    }
  53.    <%
  54.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  55.    %>  %>   <%
  56.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  57.    %> <%
  58.    <%
  59.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  60.    %>    foreach (var comment in Model.Comments)
  61.    <%
  62.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  63.    %>    {
  64.    <%
  65.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  66.    %>    <%
  67.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  68.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  69.    <%
  70.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  71.    %>    }
  72.    <%
  73.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  74.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  75.    <%
  76.    <%
  77.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  78.    %>    foreach (var comment in Model.Comments)
  79.    <%
  80.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  81.    %>    {
  82.    <%
  83.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  84.    %>    <%
  85.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  86.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  87.    <%
  88.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  89.    %>    }
  90.    <%
  91.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  92.    %>  %>  }
  93.   %> if (HttpContext.Current == null || [b]HttpContext.Current.IsDebuggingEnabled[/b]) {   <%
  94.    <%
  95.    <%
  96.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  97.    %>    foreach (var comment in Model.Comments)
  98.    <%
  99.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  100.    %>    {
  101.    <%
  102.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  103.    %>    <%
  104.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  105.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  106.    <%
  107.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  108.    %>    }
  109.    <%
  110.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  111.    %>  %>  foreach (var comment in Model.Comments)
  112.    <%
  113.    <%
  114.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  115.    %>    foreach (var comment in Model.Comments)
  116.    <%
  117.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  118.    %>    {
  119.    <%
  120.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  121.    %>    <%
  122.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  123.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  124.    <%
  125.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  126.    %>    }
  127.    <%
  128.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  129.    %>  %>  {
  130.    <%
  131.    <%
  132.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  133.    %>    foreach (var comment in Model.Comments)
  134.    <%
  135.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  136.    %>    {
  137.    <%
  138.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  139.    %>    <%
  140.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  141.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  142.    <%
  143.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  144.    %>    }
  145.    <%
  146.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  147.    %>  %>   <%
  148.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  149.    %> <%
  150.    <%
  151.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  152.    %>    foreach (var comment in Model.Comments)
  153.    <%
  154.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  155.    %>    {
  156.    <%
  157.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  158.    %>    <%
  159.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  160.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  161.    <%
  162.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  163.    %>    }
  164.    <%
  165.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  166.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  167.    <%
  168.    <%
  169.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  170.    %>    foreach (var comment in Model.Comments)
  171.    <%
  172.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  173.    %>    {
  174.    <%
  175.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  176.    %>    <%
  177.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  178.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  179.    <%
  180.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  181.    %>    }
  182.    <%
  183.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  184.    %>  %>  }
  185.   %>   <%
  186.    <%
  187.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  188.    %>    foreach (var comment in Model.Comments)
  189.    <%
  190.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  191.    %>    {
  192.    <%
  193.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  194.    %>    <%
  195.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  196.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  197.    <%
  198.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  199.    %>    }
  200.    <%
  201.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  202.    %>  %> <%
  203.    <%
  204.    <%
  205.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  206.    %>    foreach (var comment in Model.Comments)
  207.    <%
  208.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  209.    %>    {
  210.    <%
  211.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  212.    %>    <%
  213.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  214.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  215.    <%
  216.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  217.    %>    }
  218.    <%
  219.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  220.    %>  %>  foreach (var comment in Model.Comments)
  221.    <%
  222.    <%
  223.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  224.    %>    foreach (var comment in Model.Comments)
  225.    <%
  226.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  227.    %>    {
  228.    <%
  229.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  230.    %>    <%
  231.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  232.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  233.    <%
  234.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  235.    %>    }
  236.    <%
  237.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  238.    %>  %>  {
  239.    <%
  240.    <%
  241.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  242.    %>    foreach (var comment in Model.Comments)
  243.    <%
  244.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  245.    %>    {
  246.    <%
  247.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  248.    %>    <%
  249.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  250.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  251.    <%
  252.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  253.    %>    }
  254.    <%
  255.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  256.    %>  %>   <%
  257.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  258.    %> <%
  259.    <%
  260.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  261.    %>    foreach (var comment in Model.Comments)
  262.    <%
  263.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  264.    %>    {
  265.    <%
  266.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  267.    %>    <%
  268.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  269.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  270.    <%
  271.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  272.    %>    }
  273.    <%
  274.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  275.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  276.    <%
  277.    <%
  278.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  279.    %>    foreach (var comment in Model.Comments)
  280.    <%
  281.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  282.    %>    {
  283.    <%
  284.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  285.    %>    <%
  286.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  287.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  288.    <%
  289.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  290.    %>    }
  291.    <%
  292.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  293.    %>  %>  }
  294.   %> ViewLocationCache = DefaultViewLocationCache.Null;   <%
  295.    <%
  296.    <%
  297.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  298.    %>    foreach (var comment in Model.Comments)
  299.    <%
  300.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  301.    %>    {
  302.    <%
  303.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  304.    %>    <%
  305.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  306.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  307.    <%
  308.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  309.    %>    }
  310.    <%
  311.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  312.    %>  %>  foreach (var comment in Model.Comments)
  313.    <%
  314.    <%
  315.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  316.    %>    foreach (var comment in Model.Comments)
  317.    <%
  318.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  319.    %>    {
  320.    <%
  321.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  322.    %>    <%
  323.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  324.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  325.    <%
  326.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  327.    %>    }
  328.    <%
  329.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  330.    %>  %>  {
  331.    <%
  332.    <%
  333.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  334.    %>    foreach (var comment in Model.Comments)
  335.    <%
  336.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  337.    %>    {
  338.    <%
  339.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  340.    %>    <%
  341.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  342.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  343.    <%
  344.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  345.    %>    }
  346.    <%
  347.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  348.    %>  %>   <%
  349.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  350.    %> <%
  351.    <%
  352.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  353.    %>    foreach (var comment in Model.Comments)
  354.    <%
  355.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  356.    %>    {
  357.    <%
  358.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  359.    %>    <%
  360.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  361.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  362.    <%
  363.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  364.    %>    }
  365.    <%
  366.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  367.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  368.    <%
  369.    <%
  370.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  371.    %>    foreach (var comment in Model.Comments)
  372.    <%
  373.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  374.    %>    {
  375.    <%
  376.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  377.    %>    <%
  378.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  379.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  380.    <%
  381.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  382.    %>    }
  383.    <%
  384.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  385.    %>  %>  }
  386.   %> }   <%
  387.    <%
  388.    <%
  389.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  390.    %>    foreach (var comment in Model.Comments)
  391.    <%
  392.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  393.    %>    {
  394.    <%
  395.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  396.    %>    <%
  397.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  398.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  399.    <%
  400.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  401.    %>    }
  402.    <%
  403.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  404.    %>  %>  foreach (var comment in Model.Comments)
  405.    <%
  406.    <%
  407.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  408.    %>    foreach (var comment in Model.Comments)
  409.    <%
  410.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  411.    %>    {
  412.    <%
  413.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  414.    %>    <%
  415.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  416.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  417.    <%
  418.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  419.    %>    }
  420.    <%
  421.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  422.    %>  %>  {
  423.    <%
  424.    <%
  425.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  426.    %>    foreach (var comment in Model.Comments)
  427.    <%
  428.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  429.    %>    {
  430.    <%
  431.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  432.    %>    <%
  433.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  434.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  435.    <%
  436.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  437.    %>    }
  438.    <%
  439.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  440.    %>  %>   <%
  441.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  442.    %> <%
  443.    <%
  444.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  445.    %>    foreach (var comment in Model.Comments)
  446.    <%
  447.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  448.    %>    {
  449.    <%
  450.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  451.    %>    <%
  452.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  453.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  454.    <%
  455.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  456.    %>    }
  457.    <%
  458.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  459.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  460.    <%
  461.    <%
  462.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  463.    %>    foreach (var comment in Model.Comments)
  464.    <%
  465.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  466.    %>    {
  467.    <%
  468.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  469.    %>    <%
  470.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  471.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  472.    <%
  473.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  474.    %>    }
  475.    <%
  476.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  477.    %>  %>  }
  478.   %> else {   <%
  479.    <%
  480.    <%
  481.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  482.    %>    foreach (var comment in Model.Comments)
  483.    <%
  484.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  485.    %>    {
  486.    <%
  487.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  488.    %>    <%
  489.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  490.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  491.    <%
  492.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  493.    %>    }
  494.    <%
  495.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  496.    %>  %>  foreach (var comment in Model.Comments)
  497.    <%
  498.    <%
  499.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  500.    %>    foreach (var comment in Model.Comments)
  501.    <%
  502.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  503.    %>    {
  504.    <%
  505.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  506.    %>    <%
  507.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  508.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  509.    <%
  510.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  511.    %>    }
  512.    <%
  513.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  514.    %>  %>  {
  515.    <%
  516.    <%
  517.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  518.    %>    foreach (var comment in Model.Comments)
  519.    <%
  520.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  521.    %>    {
  522.    <%
  523.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  524.    %>    <%
  525.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  526.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  527.    <%
  528.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  529.    %>    }
  530.    <%
  531.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  532.    %>  %>   <%
  533.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  534.    %> <%
  535.    <%
  536.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  537.    %>    foreach (var comment in Model.Comments)
  538.    <%
  539.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  540.    %>    {
  541.    <%
  542.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  543.    %>    <%
  544.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  545.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  546.    <%
  547.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  548.    %>    }
  549.    <%
  550.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  551.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  552.    <%
  553.    <%
  554.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  555.    %>    foreach (var comment in Model.Comments)
  556.    <%
  557.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  558.    %>    {
  559.    <%
  560.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  561.    %>    <%
  562.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  563.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  564.    <%
  565.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  566.    %>    }
  567.    <%
  568.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  569.    %>  %>  }
  570.   %>   <%
  571.    <%
  572.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  573.    %>    foreach (var comment in Model.Comments)
  574.    <%
  575.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  576.    %>    {
  577.    <%
  578.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  579.    %>    <%
  580.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  581.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  582.    <%
  583.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  584.    %>    }
  585.    <%
  586.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  587.    %>  %> <%
  588.    <%
  589.    <%
  590.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  591.    %>    foreach (var comment in Model.Comments)
  592.    <%
  593.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  594.    %>    {
  595.    <%
  596.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  597.    %>    <%
  598.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  599.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  600.    <%
  601.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  602.    %>    }
  603.    <%
  604.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  605.    %>  %>  foreach (var comment in Model.Comments)
  606.    <%
  607.    <%
  608.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  609.    %>    foreach (var comment in Model.Comments)
  610.    <%
  611.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  612.    %>    {
  613.    <%
  614.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  615.    %>    <%
  616.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  617.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  618.    <%
  619.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  620.    %>    }
  621.    <%
  622.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  623.    %>  %>  {
  624.    <%
  625.    <%
  626.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  627.    %>    foreach (var comment in Model.Comments)
  628.    <%
  629.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  630.    %>    {
  631.    <%
  632.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  633.    %>    <%
  634.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  635.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  636.    <%
  637.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  638.    %>    }
  639.    <%
  640.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  641.    %>  %>   <%
  642.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  643.    %> <%
  644.    <%
  645.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  646.    %>    foreach (var comment in Model.Comments)
  647.    <%
  648.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  649.    %>    {
  650.    <%
  651.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  652.    %>    <%
  653.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  654.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  655.    <%
  656.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  657.    %>    }
  658.    <%
  659.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  660.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  661.    <%
  662.    <%
  663.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  664.    %>    foreach (var comment in Model.Comments)
  665.    <%
  666.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  667.    %>    {
  668.    <%
  669.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  670.    %>    <%
  671.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  672.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  673.    <%
  674.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  675.    %>    }
  676.    <%
  677.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  678.    %>  %>  }
  679.   %> ViewLocationCache = new DefaultViewLocationCache();   <%
  680.    <%
  681.    <%
  682.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  683.    %>    foreach (var comment in Model.Comments)
  684.    <%
  685.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  686.    %>    {
  687.    <%
  688.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  689.    %>    <%
  690.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  691.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  692.    <%
  693.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  694.    %>    }
  695.    <%
  696.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  697.    %>  %>  foreach (var comment in Model.Comments)
  698.    <%
  699.    <%
  700.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  701.    %>    foreach (var comment in Model.Comments)
  702.    <%
  703.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  704.    %>    {
  705.    <%
  706.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  707.    %>    <%
  708.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  709.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  710.    <%
  711.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  712.    %>    }
  713.    <%
  714.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  715.    %>  %>  {
  716.    <%
  717.    <%
  718.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  719.    %>    foreach (var comment in Model.Comments)
  720.    <%
  721.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  722.    %>    {
  723.    <%
  724.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  725.    %>    <%
  726.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  727.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  728.    <%
  729.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  730.    %>    }
  731.    <%
  732.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  733.    %>  %>   <%
  734.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  735.    %> <%
  736.    <%
  737.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  738.    %>    foreach (var comment in Model.Comments)
  739.    <%
  740.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  741.    %>    {
  742.    <%
  743.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  744.    %>    <%
  745.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  746.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  747.    <%
  748.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  749.    %>    }
  750.    <%
  751.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  752.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  753.    <%
  754.    <%
  755.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  756.    %>    foreach (var comment in Model.Comments)
  757.    <%
  758.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  759.    %>    {
  760.    <%
  761.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  762.    %>    <%
  763.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  764.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  765.    <%
  766.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  767.    %>    }
  768.    <%
  769.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  770.    %>  %>  }
  771.   %> }}
复制代码
这里的判断说明如果启用了Debug模式,将会使用NullViewLocationCache,即不进行缓存,否则会使用DefaultViewLocationCache对View路径进行缓存。所以上面的测试结果都是基于Debug模式:
Code 6:
  1. [/code]如果关闭了Debug模式,测试结果又该如何呢?使用下面代码关闭Debug模式:
  2. Code 7:
  3. [code]
复制代码
再次进行测试,会发现使用Code 2代码呈现200条评论时,花费的时间平均值也是在10ms左右。所以在使用RenderPartial方法时,大可不必为了提升性能而指定UserControl的完全路径,ASP.NET MVC已经为我们做好了这一切,我们要做的仅仅是在发布到生产环境时,别忘了关闭Debug模式!在本示例中,开启Debug和关闭Debug模式在一次调用时的性能差距如下图所示:
2.png
 
性能优化2

现在回过头来看前面的代码,其实并没有做什么性能优化,仅仅时给大家提个醒而已。在Code 2中,我们的遍历代码放在了主页面中,即在每一次迭代中调用RenderPartial方法,尽管ASP.NET MVC在RenderPartial时,对于UserControl路径做了缓存,但是200次的调用仍然有不小的开销。如果我们的遍历代码放在UserControl中,而在主页面中只进行一次调用RenderPartial方法,结果又将如何呢?修改UserControl为下代码所示:
Code 8:
  1. <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Comment>" %>
  2. <%@ Import Namespace="TerryLee.MvcPerformance01.Models" %>
  3. <p>
  4.    <%
  5.    <%
  6.    <%
  7.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  8.    %>    foreach (var comment in Model.Comments)
  9.    <%
  10.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  11.    %>    {
  12.    <%
  13.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  14.    %>    <%
  15.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  16.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  17.    <%
  18.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  19.    %>    }
  20.    <%
  21.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  22.    %>  %>  foreach (var comment in Model.Comments)
  23.    <%
  24.    <%
  25.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  26.    %>    foreach (var comment in Model.Comments)
  27.    <%
  28.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  29.    %>    {
  30.    <%
  31.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  32.    %>    <%
  33.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  34.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  35.    <%
  36.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  37.    %>    }
  38.    <%
  39.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  40.    %>  %>  {
  41.    <%
  42.    <%
  43.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  44.    %>    foreach (var comment in Model.Comments)
  45.    <%
  46.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  47.    %>    {
  48.    <%
  49.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  50.    %>    <%
  51.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  52.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  53.    <%
  54.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  55.    %>    }
  56.    <%
  57.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  58.    %>  %>   <%
  59.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  60.    %> <%
  61.    <%
  62.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  63.    %>    foreach (var comment in Model.Comments)
  64.    <%
  65.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  66.    %>    {
  67.    <%
  68.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  69.    %>    <%
  70.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  71.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  72.    <%
  73.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  74.    %>    }
  75.    <%
  76.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  77.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  78.    <%
  79.    <%
  80.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  81.    %>    foreach (var comment in Model.Comments)
  82.    <%
  83.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  84.    %>    {
  85.    <%
  86.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  87.    %>    <%
  88.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  89.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  90.    <%
  91.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  92.    %>    }
  93.    <%
  94.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  95.    %>  %>  }
  96.   %> ID: <%=Model.ID %> <br />
  97.    <%
  98.    <%
  99.    <%
  100.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  101.    %>    foreach (var comment in Model.Comments)
  102.    <%
  103.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  104.    %>    {
  105.    <%
  106.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  107.    %>    <%
  108.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  109.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  110.    <%
  111.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  112.    %>    }
  113.    <%
  114.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  115.    %>  %>  foreach (var comment in Model.Comments)
  116.    <%
  117.    <%
  118.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  119.    %>    foreach (var comment in Model.Comments)
  120.    <%
  121.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  122.    %>    {
  123.    <%
  124.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  125.    %>    <%
  126.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  127.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  128.    <%
  129.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  130.    %>    }
  131.    <%
  132.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  133.    %>  %>  {
  134.    <%
  135.    <%
  136.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  137.    %>    foreach (var comment in Model.Comments)
  138.    <%
  139.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  140.    %>    {
  141.    <%
  142.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  143.    %>    <%
  144.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  145.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  146.    <%
  147.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  148.    %>    }
  149.    <%
  150.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  151.    %>  %>   <%
  152.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  153.    %> <%
  154.    <%
  155.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  156.    %>    foreach (var comment in Model.Comments)
  157.    <%
  158.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  159.    %>    {
  160.    <%
  161.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  162.    %>    <%
  163.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  164.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  165.    <%
  166.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  167.    %>    }
  168.    <%
  169.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  170.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  171.    <%
  172.    <%
  173.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  174.    %>    foreach (var comment in Model.Comments)
  175.    <%
  176.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  177.    %>    {
  178.    <%
  179.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  180.    %>    <%
  181.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  182.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  183.    <%
  184.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  185.    %>    }
  186.    <%
  187.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  188.    %>  %>  }
  189.   %> Author: <%=Model.Author %> <br />
  190.    <%
  191.    <%
  192.    <%
  193.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  194.    %>    foreach (var comment in Model.Comments)
  195.    <%
  196.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  197.    %>    {
  198.    <%
  199.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  200.    %>    <%
  201.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  202.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  203.    <%
  204.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  205.    %>    }
  206.    <%
  207.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  208.    %>  %>  foreach (var comment in Model.Comments)
  209.    <%
  210.    <%
  211.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  212.    %>    foreach (var comment in Model.Comments)
  213.    <%
  214.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  215.    %>    {
  216.    <%
  217.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  218.    %>    <%
  219.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  220.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  221.    <%
  222.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  223.    %>    }
  224.    <%
  225.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  226.    %>  %>  {
  227.    <%
  228.    <%
  229.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  230.    %>    foreach (var comment in Model.Comments)
  231.    <%
  232.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  233.    %>    {
  234.    <%
  235.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  236.    %>    <%
  237.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  238.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  239.    <%
  240.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  241.    %>    }
  242.    <%
  243.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  244.    %>  %>   <%
  245.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  246.    %> <%
  247.    <%
  248.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  249.    %>    foreach (var comment in Model.Comments)
  250.    <%
  251.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  252.    %>    {
  253.    <%
  254.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  255.    %>    <%
  256.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  257.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  258.    <%
  259.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  260.    %>    }
  261.    <%
  262.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  263.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  264.    <%
  265.    <%
  266.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  267.    %>    foreach (var comment in Model.Comments)
  268.    <%
  269.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  270.    %>    {
  271.    <%
  272.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  273.    %>    <%
  274.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  275.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  276.    <%
  277.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  278.    %>    }
  279.    <%
  280.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  281.    %>  %>  }
  282.   %> Description: <%= Model.Description %>
  283. </p>
  284. <hr />
复制代码
这样在主页面中,只进行一次RenderPartial调用,如下代码所示:
  1.    <%
  2.    <%
  3.    <%
  4.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  5.    %>    foreach (var comment in Model.Comments)
  6.    <%
  7.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  8.    %>    {
  9.    <%
  10.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  11.    %>    <%
  12.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  13.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  14.    <%
  15.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  16.    %>    }
  17.    <%
  18.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  19.    %>  %>  foreach (var comment in Model.Comments)
  20.    <%
  21.    <%
  22.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  23.    %>    foreach (var comment in Model.Comments)
  24.    <%
  25.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  26.    %>    {
  27.    <%
  28.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  29.    %>    <%
  30.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  31.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  32.    <%
  33.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  34.    %>    }
  35.    <%
  36.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  37.    %>  %>  {
  38.    <%
  39.    <%
  40.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  41.    %>    foreach (var comment in Model.Comments)
  42.    <%
  43.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  44.    %>    {
  45.    <%
  46.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  47.    %>    <%
  48.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  49.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  50.    <%
  51.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  52.    %>    }
  53.    <%
  54.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  55.    %>  %>   <%
  56.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  57.    %> <%
  58.    <%
  59.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  60.    %>    foreach (var comment in Model.Comments)
  61.    <%
  62.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  63.    %>    {
  64.    <%
  65.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  66.    %>    <%
  67.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  68.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  69.    <%
  70.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  71.    %>    }
  72.    <%
  73.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  74.    %>  %>  <strong>Html.RenderPartial("CommentsItem", comment);</strong>
  75.    <%
  76.    <%
  77.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  78.    %>    foreach (var comment in Model.Comments)
  79.    <%
  80.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  81.    %>    {
  82.    <%
  83.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  84.    %>    <%
  85.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  86.    %>    <strong>Html.RenderPartial("~/Views/Shared/CommentsItem.ascx", comment);</strong>
  87.    <%
  88.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  89.    %>    }
  90.    <%
  91.      Html.RenderPartial("CommentsItem", <strong>Model.Comments</strong>);
  92.    %>  %>  }
  93.   %>
复制代码
此时再次测试,可以看到呈现200条评论所花费的时间不足1ms!为了直观期间,我们仍然使用图形表示如下:
3.png
 
从上图中可以看到,通过在UserControl中进行遍历,减少RenderPartial方法调用,带来的性能提升还是非常可观的。
总结



本文主要讨论在ASP.NET MVC中使用RenderPartial方法时的一些性能问题,记住两点:一是在ASP.NET MVC应用程序发布到生产服务器时,别忘了关闭Debug模式(对于ASP.NET WebForm应用程序也是一样);二时尽可能的减少调用RenderPartial方法的次数,如通过在UserControl中进行遍历等方法。希望对大家有用。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册