2011-08-07 5 views
4

나는 다음과 같은 마크 업이 있습니다중계기를 최적화하는 방법 화이트 공간 내 중계기에서

꽤 읽을 수
<asp:Repeater runat="server" id="TeamsRepeater" OnItemDataBound="TeamsRepeater_ItemDataBound" ClientIDMode="Predictable"> 
     <ItemTemplate> 
      <tr runat="server" id="team"> 
       <td><%# Container.ItemIndex + 1 %></td> 
       <td><%#Eval("PosChange")%></td> 
       <th><%# ((ITeam)Eval("MemberTeam")).Href()%></th> 
       <td><%#Eval("GamesAll")%></td> 
       <td><%#Eval("GameW")%></td> 
       <td><%#Eval("GameD")%></td> 
       <td><%#Eval("GameL")%></td> 
       <td><%#((ITournMember)Container.DataItem).Goals()%></td> 
       <td><%#Eval("Score")%></td> 
      </tr> 
     </ItemTemplate> 
    </asp:Repeater> 

(당신이 뭔가 더 잘 수행 할 수 있습니다 볼 경우 유지 보수가 날 지점하시기 바랍니다).

하지만 내 관심사는이 마크 업에 대해 생성하는 HTML 코드는 공간의 엄청난 금액을 포함입니다 ...

나는 순서 있음을 향상시킬 수있는 방법을

:

  1. 출력 HTML에서 불필요한 공백을 제거;
  2. 동시에 : 마크 업 가독성을 유지 하시겠습니까?
+0

를 등록하려면이 입력을하지만 당신은이 작업을 수행 할 수 귀하의 재산 getters에 단순히 get {return propertyName.Trim();} 당신의 관심사가 있다면 귀하의 마크 업 가사 성을 희생하지 않아도됩니다 – Icarus

답변

3

공간을 없애기 위해 가독성을 희생하지 않겠습니다. 이것은 장기적으로 당신을 해칠 것입니다. 대신 동적 콘텐츠 (예 : IIS HTTP Compression)를 사용하도록 압축을 설정하면 최종 결과는 일반 HTML보다 훨씬 작은 aspx 페이지의 동적 gzip 압축이됩니다.

0

@Budda, 내 결정은 바보가 될 수 있지만 작동 :) 아마도 읽을 수

<table> 
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="CustomersSource"> 
     <ItemTemplate><%# string.Format("<tr>{0}</tr>", 
          string.Format("<td>{0}</td>", 
           string.Join("</td><td>", 
            new[] 
             { 
             Eval("CustomerID"), 
             Eval("CompanyName") 
             }))) %></ItemTemplate> 
    </asp:Repeater> 
</table> 

도우미 방법에 이동 코드는 우리가 더 우아한 결정을 얻을 것이다 경우

public static class HtmlHelper 
{ 
    public static string TableRow(params string[] tdList) 
    { 
    return string.Format("<tr>{0}</tr>", string.Format("<td>{0}</td>", string.Join("</td><td>", tdList))); 
    } 
} 

+0

아마 재미있는 생각,하지만 아무 ... – Budda

2

모듈 만들기는 훌륭하지만 AJAX 요청이 응답 크기만큼 처리 된 이후 작동하지 않는 패널 및 AJAX를 사용하는 경우 효과적입니다. 응답이 변경되면 AJAX javascript가 실패합니다. 따라서 나는 그것을 다시 보내기 전에 응답을 트리밍 리피터 컨트롤 생성 :

<Assembly: TagPrefix("MyControls", "MyRepeater")> 
    ''' <summary> 
    ''' Summary description for MyRepeater. 
    ''' </summary> 
    <ToolboxData("<{0}:MyRepeater runat=server></{0}:MyRepeater>")> 
    Public Class MyRepeater : Inherits Repeater 
     Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter) 

     Using htmlwriter As New HtmlTextWriter(New System.IO.StringWriter()) 
      MyBase.Render(htmlwriter) 
      Dim html As String = htmlwriter.InnerWriter.ToString() 
      html = Regex.Replace(html, "(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}", String.Empty) 
      html = Regex.Replace(html, "[ \f\r\t\v]?([\n\xFE\xFF/{}[\];,<>*%&|^!~?:=])[\f\r\t\v]?", "$1") 
      html = html.Replace(";\n", ";") 
      writer.Write(html.Trim()) 
     End Using 
     End Sub 
    End Class 

그런 다음 aspx 페이지에 컨트롤을 나는이 추한 수 있습니다 알고

<%@ Register TagPrefix="ccl" Assembly="MyControls" Namespace="MyControls" %>   
관련 문제