如何在c#中动态创建向导控件?

时间:2016-08-30 19:41:10

标签: c# asp.net

我正在创建一个收集客户信息并将其插入数据库的Web表单。客户可以拥有3种帐户:合并帐户(帐单和发货到此位置),帐单帐户(仅限此帐户的帐单)和送货帐户(仅发送到此位置。

收集的信息分为5类:一般(商店名称,地址,分机......)员工,所有者(特定地点),贸易参考和银行业务。

我目前有一个包含5个步骤的向导(每个类别一个),但根据帐户类型的不同,我不需要全部步骤。例如,送货地址需要一般信息和员工信息,可选地需要所有者信息,并且不应该有贸易参考或银行信息。此外,用户需要在确定帐户类型之前完全填写一般信息类别。

似乎没有办法禁用整个向导步骤(我的意思是它的链接没有出现在侧边栏上而且无法导航到),所以我想要动态创建向导,以便我只获得我需要的步骤。问题是该向导目前在.aspx页面上有700多行代码,并且动态创建它可能需要两倍(如果我很幸运)。

我是否可以通过某种方式静态创建每个步骤,然后动态决定在我的向导中使用哪些步骤,或者纯粹是动态我唯一的选择?

或者(这是最可能的情况)是否有一个更简单的解决方案可以让我得到我正在寻找的结果?

1 个答案:

答案 0 :(得分:0)

鉴于向导的高度可定制需求,他们中的许多人已经被淘汰,转而手工创建所有代码。可以安全地假设您在这里谈论的向导是ASP.Net WebForm向导对象吗?我相信服务器控件暂时没有更新。

您可以考虑做的一件事是构建客户端的所有UI元素,然后让AJAX / WebAPI端点进行数据处理。通过采用此路线,您可以根据正在处理的帐户类型类型轻松显示/隐藏/自定义各种标签/步骤(您可以从URL或隐藏的表单字段或其他内容获取)。你可以谷歌搜索" jQuery向导构建器"或类似的东西找到那里的图书馆。

在这方面将演示文稿与数据处理分离将为您提供更大的灵活性。它仍然可能需要多于700行代码,但您可以更好地控制为最终用户处理数据的内容,方式和时间。您可以将向导设置为在每个步骤后发布到您的服务,或者等到收到所有数据后再提交。