C# 调用事件处理程序动态

标签 c# asp.net

我正在尝试使用序列化字典(controlId - 字符串,controlValue - 字符串)保存来自一个 WebForm 的所有控件。接下来我想反序列化该字典并用它们的值动态填充控件。

问题是我的某些控件具有 AutoPostBack true 和事件处理程序。 有没有办法动态调用这些事件处理程序?我想避免通过控件的 id 进行另一个切换。

例如:

foreach (KeyValuePair<string, string> kvp in dict)
{
    Control c = findControlRecursive(Page, kvp.Key);
    if (c != null)
    {
        switch (c.GetType().Name)
        {
            case "TextBox":
                ((TextBox)c).Text = kvp.Value;
                if (((TextBox)c).AutoPostBack) .......

编辑:

假设我有 10 种不同的形式。每个都有大约 50 个控件。我想添加/编辑一组数据。我尽量避免在数据库中使用每个控件都有列的表,这就是我想使用序列化的原因。

最佳答案

在我看来,您正在尝试重新发明轮子。 ASP.NET 提供了 WebUserControl 类,它可以在不同的页面上使用,并作为一组控件的容器。您可以为这些控件定义事件处理程序,无论您在哪个页面上使用它们,它们都会被适本地调用。

因此,我建议您使用基于 WebUserControl 的方法而不对控件进行序列化/反序列化。这是一个简单有效的解决方案。

关于C# 调用事件处理程序动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10834094/

相关文章:

c# - 在接口(interface)中创建通用属性

c# - 休息调用 Azure

c# - 您推荐使用哪种客户端工具与 Subversion 存储库一起使用

c# - 如何对记录进行分组并仅检索具有前 N 条记录的第一组

c# - |C#|来自另一个线程的 DataGridView.Add() 没有滚动条

c# - 在不使用 LINQ 和 EF 的情况下从 ASP.NET 切换到 ASP MVC

c# - 使用参数动态加载用户控件

c# - 为什么在 C# 中不能共存相同类型的隐式和显式运算符?

c# - RNGCryptoServiceProvider - 随机数审查

asp.net - 如何在 Visual Studio 社区版中应用待处理的显式迁移? (ASP.NET)