DotNetNuke:将数据从一个模块传递到另一个模块

时间:2018-04-11 09:58:52

标签: asp.net dotnetnuke

我正在使用DotNetNuke开发一个网站,逐个模块。 在页面(选项卡)中,我有3个模块。 2个模块是相同的模块,它们是Form模块,但是我将它命名为不同的名称(A部分和B部分)。

在我的Button模块中,它涉及A部分和B部分的处理,如何将带有A部分和B部分的表单模块中的数据传递到同一页面(Tabs)中的Button模块?

1 个答案:

答案 0 :(得分:2)

为此,您需要IModuleCommunicatorIModuleListener接口。

在将发送数据的模块上:

public partial class View : Module1, IModuleCommunicator
{
    public event ModuleCommunicationEventHandler ModuleCommunication;

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            sendDataToOtherModule("This is a test.");
        }
        catch (Exception ex)
        {
            Exceptions.ProcessModuleLoadException(this, ex);
        }
    }

    public void sendDataToOtherModule(string valueToSend)
    {
        ModuleCommunicationEventArgs mcea = new ModuleCommunicationEventArgs();

        mcea.Target = "TheOtherModule";
        mcea.Value = valueToSend;

        ModuleCommunication(this, mcea);
    }
}

在将接收数据的模块上

但您可以在每个模块中使用此代码并检查Target

public partial class View : Module2, IModuleListener
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            //module code
        }
        catch (Exception ex)
        {
            Exceptions.ProcessModuleLoadException(this, ex);
        }
    }

    public void OnModuleCommunication(object sender, ModuleCommunicationEventArgs e)
    {
        if (e.Target == "TheOtherModule")
        {
            Label1.Text = e.Value.ToString();
        }
    }
}

在两个模块上添加using DotNetNuke.Entities.Modules.Communications