我目前无法直接访问我的代码库,但希望我能够充分展示我的问题,而无需发布我的实际代码。
为了设置场景,我有一个相当长且笨拙的多页&#34;预订表格&#34;使用MultiView的控件,每个页面都有一个View。我试图重构它以整理它并使其更具可读性(虽然我需要将它保持在一个控件内)。在一个特定的视图中,我有一个ListView,可用于在预订中添加任意数量的其他人。 ListView被手动绑定到List<Person>
(通过OnItemUpdating
和OnItemInserting
事件),这是整个Booking
对象的成员。
我的ListView有一个EditItemTemplate和一个InsertItemTemplate。它们几乎完全相同,除了EditItemTemplate有一些关于顶部现有项目的附加信息:
<EditItemTemplate>
<div class="ItemInfo">
<!-- Controls a & b -->
</div>
<div class="FormControls">
<!-- Controls c, d, & e -->
</div>
</EditItemTemplate>
<InsertItemTemplate>
<div class="FormControls">
<!-- Controls c, d, & e -->
</div>
</InsertItemTemplate>
我希望能够做的是将这些模板中的一个基于另一个,这将允许我删除大约300行冗余标记。但是,我仍然只能使用一个独立控件。我已经看到了类似情况的例子已经解决过这样的问题:
protected void lvPeople_Init(Object sender, EventArgs e)
{
lvPeople.InsertItemTemplate = lvPeople.EditItemTemplate;
}
这里的问题是,这也将把控件放在&#39;和&#39; b&#39;进入InsertItemTemplate。 &#39;一个&#39;和&#39; b&#39;包含新添加项目尚不存在的信息。我可以输入默认值,但这是不可取的,因为表单将是多语言的,这对内容编辑者来说意味着不必要的额外工作 - 这些控件最好是EditItemTemplate独有的。
在没有使用额外控件的情况下,是否有一种巧妙的处理方式?
感谢。