1

目前我无法直接访问我的代码库,但希望我可以在不发布实际代码的情况下充分展示我的问题。

为了设置场景,我有一个相当长且笨拙的多页“预订表单”控件,它使用 MultiView,每个页面都有一个视图。我正在尝试对其进行重构以对其进行整理并使其更具可读性(尽管我需要将其保留在一个控件中)。在一个特定视图中,我有一个 ListView,可用于向预订中添加任意数量的额外人员。ListView 手动绑定到一个List<Person>(通过OnItemUpdatingOnItemInserting事件),它是整个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;
}

这里的问题是,这也会将控件“a”和“b”放入 InsertItemTemplate。“a”和“b”包含新添加项目尚不存在的信息。我可以输入默认值,但这是不可取的,因为表单将是多语言的,这将意味着内容编辑器不必要的额外工作 - 这些控件最好是 EditItemTemplate 独有的。

有没有一种不使用额外控件的巧妙方法来处理这个问题?

谢谢。

4

0 回答 0