我正在尋找一個簡單的輕量級ASP.NET服務器控件來呈現2列,一個標籤和一個單選按鈕列表。它應該看起來像這樣。我應該使用哪一個ASP.NET服務器控件?
Gender Male/Female
Recommend us Yes/No
and so on..
我覺得中繼器或數據網是一個矯枉過正,因爲這個網頁需要高性能的頁面,應該很輕。
你推薦什麼服務器控制?
我正在尋找一個簡單的輕量級ASP.NET服務器控件來呈現2列,一個標籤和一個單選按鈕列表。它應該看起來像這樣。我應該使用哪一個ASP.NET服務器控件?
Gender Male/Female
Recommend us Yes/No
and so on..
我覺得中繼器或數據網是一個矯枉過正,因爲這個網頁需要高性能的頁面,應該很輕。
你推薦什麼服務器控制?
請定義高性能和「非常輕」。如果通過「非常輕」來表示呈現的HTML標記,那麼Repeater控件是最好的選擇,因爲您完全控制了標記。如果你的意思是服務器端處理,你可能想寫一個自定義控件。
但是,如果您可以使用輸出緩存,則在初始加載之後,服務器端上中繼器的收益可以忽略不計。
我用兩行的例子測試了一個純HTML解決方案與中繼器解決方案。
控制(空白頁): 693字節呈現給客戶端,0.22毫秒
純HTML溶液: 1029字節呈現給客戶端時,服務器處理時間:0.26毫秒
中繼器解決方案:渲染 2196字節客戶端,服務器處理時間:0.47毫秒(大部分開銷是由於使用RadioButtonList控件)
你說的是1 kb的未壓縮和0.21毫秒的開銷使用中繼器和單選按鈕列表。
作爲交換,你要保持這樣的:
<table>
<tbody>
<asp:Repeater ID="r" runat="server">
<ItemTemplate>
<tr>
<td>
<asp:Literal ID="l" runat="server" EnableViewState="false" Text='<%# Eval("Label") %>' />
</td>
<td>
<asp:RadioButtonList ID="rbl" runat="server" EnableViewState="false"
DataSource='<%# ((Option)Container.DataItem).RadioButtonLabels %>'
RepeatDirection="Horizontal" RepeatLayout="Flow">
</asp:RadioButtonList>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
,而不是這樣的:
StringBuilder sb = new StringBuilder();
sb.Append("<table><tbody>");
foreach (Option option in options)
{
sb.AppendFormat("<tr><td>{0}</td><td>", option.Label);
foreach (string label in option.RadioButtonLabels)
{
sb.AppendFormat("{0}<input type=\"radio\" name=\"{1}\" value=\"{0}\" />", label, option.Label);
}
sb.Append("</td></tr>");
}
sb.Append("</tbody></table>");
個人而言,我更喜歡第一種選擇,但你可能傾向於第二種。
我有15-20這些在這個頁面上,它加起來很快。雖然我也傾向於第一種選擇,但我想知道是否有辦法縮小尺寸和縮短處理時間。我看到你沒有關閉中繼器級別的視圖狀態。有什麼理由呢? – DotnetDude 2010-12-17 21:23:30
不,不是。只是一個疏忽。如果關閉viewstate,則必須綁定每個Page_Init,只是如此。我想你可以看到一個合理的收益,如果你避免RadioButtonList呈現一些非常大的標記。直放站本身是精益。 – Greg 2010-12-17 21:27:34
我花了30分鐘寫這篇文章並測試它,一個4字的答案獲得更多的選票,然後我的。 :sad: – Greg 2010-12-18 20:13:56
作爲網頁用戶控件的聲音對您最有效,因爲您可以將「頭頂」控制在最低限度。
乾杯, 斯特凡
我覺得,一箇中繼器或一個DataGrid 是矯枉過正,因爲這頁需要 高高性能頁,應該是 很輕。
我建議純html。
我需要的單選按鈕是一個服務器控件 – DotnetDude 2010-12-17 15:36:43
你可以做你想要的通過HTML和JavaScript。
此列表可以根據數據庫(或其他配置)進行更改,還是硬編碼? – Greg 2010-12-17 16:09:11
列表不能被硬編碼。它基於數據庫。 – DotnetDude 2010-12-17 21:26:13