0
我有ASP.Net控件的搜索属性与复选框选项和ASP.NET中继器。对于响应式设计,我在两个不同的地方有相同的绑定来匹配设计。ASP.Net中继器响应控件绑定
在这里,CheckBoxList ID = Options1 & ID = Options2都具有相同的绑定,但代码将重复。我有400行检查单个绑定的条件。我必须再次复制所有代码才能看到另一个视图。 有没有什么办法可以优化代码,以便与两个视图处理进行单一绑定。 (避免重复绑定和检查)?
// Desktop View
<div class="hidden-sm hidden-xs narrowSearch">
//Content
<asp:Repeater ID="rptAttributes1" runat="server" EnableViewState="true" OnItemDataBound="rptAttributes_ItemDataBound">
<ItemTemplate>
<li>
<div class="form">
<asp:CheckBoxList ID="Options1" runat="server" AutoPostBack="false" Visible="false"
DataTextField="EnOptionName" DataValueField="SubCategoryAttributeOptionID" Font-Strikeout="False" />
</div>
</li>
</ItemTemplate>
</asp:Repeater>
</div>
// Mobile view
<div class="sec_left hidden-lg hidden-md">
<div class="moremenu narrowSearch">
//Content
<asp:Repeater ID="rptAttribute2" runat="server" EnableViewState="true" OnItemDataBound="rptAttributes_ItemDataBound">
<ItemTemplate>
<li>
<div class="form">
<asp:CheckBoxList ID="Options2" runat="server" AutoPostBack="false" Visible="false"
DataTextField="EnOptionName" DataValueField="SubCategoryAttributeOptionID" Font-Strikeout="False" />
</div>
</li>
</ItemTemplate>
</asp:Repeater>
</div>
</div>
代码背后:
CheckBoxList chklOptions1 = item.FindControl("Options1") as CheckBoxList;
CheckBoxList chklOptions2 = item.FindControl("Options2") as CheckBoxList;
例如,我必须检查当前使用此代码的复选框属性值。 if(options.Checked == true) { _lstProducts = _lstProducts.Intersect(lstDeals).ToList(); } 但在这种情况下,我必须重复检查这两个视图 如果(options1.Checked == TRUE){ _lstProducts = _lstProducts.Intersect(lstDeals).ToList(); } if(options2.Checked == true) { _lstProducts = _lstProducts.Intersect(lstDeals).ToList(); } 因此,每一个检查转换为两个。避免这种检查到单身它很好 – Marudu
你的例子证实我的建议(将您的代码移动到一个自定义的用户控件)应该在你的情况下工作得很好。 – Lawrence
是的,你是正确的,你建议。但如果我使用用户控件,我在页面中的两个地方使用此控件。所以,我再次检查两个不同的ID是唯一的权利。那么如何减少我的后端检查呢?我只关注后端代码优化。 – Marudu