Asp.net orchard中控件间的交互通信

Asp.net orchard中控件间的交互通信,asp.net,.net,asp.net-mvc-4,orchardcms,Asp.net,.net,Asp.net Mvc 4,Orchardcms,orchard中是否有办法在自定义小部件之间相互通信 情景:- 假设:-我们有一个小部件名称教师。其中可以添加学生姓名。在同一页上,我们有第二个小部件名学生。当教师添加新的学生名字时,它将显示在同一页面的第二个小部件(学生)中。在第二页,我们还拖拽了学生小部件,它也应该用新值更新。我不想在数据库中存储值。请帮帮我。 提前感谢。Orchard没有任何具体的方法来做这件事,但是如果你想做的话,它也不会妨碍你 我们在一些小部件中有类似的内部通信。我们通过向小部件添加一个特定属性(可以通过编辑小部件进行

orchard中是否有办法在自定义小部件之间相互通信

情景:-

假设:-我们有一个小部件名称教师。其中可以添加学生姓名。在同一页上,我们有第二个小部件名学生。当教师添加新的学生名字时,它将显示在同一页面的第二个小部件(学生)中。在第二页,我们还拖拽了学生小部件,它也应该用新值更新。我不想在数据库中存储值。请帮帮我。
提前感谢。

Orchard没有任何具体的方法来做这件事,但是如果你想做的话,它也不会妨碍你

我们在一些小部件中有类似的内部通信。我们通过向小部件添加一个特定属性(可以通过编辑小部件进行更改)来实现,在该属性中输入要链接到的小部件的名称。在我们的例子中,我们使用的小部件共享一个JSON对象(链接的小部件现在知道它链接到的小部件的名称,因此我们可以确定如何获取JSON对象)。然后,我们使用一个可观察风格的JS框架(我相信我们的前端开发人员使用的是木偶,但选择你的风格)。如果小部件A或小部件B更新了JSON对象,那么html的内容会自动更新,这取决于JS框架的工作方式。这提供了很好的“交互式”小部件

或者,如果您只关心加载时的链接,那么两个小部件都应该从实现IDependency(例如IMyService)的接口(即“每个请求”)中提取数据,然后您可以通过这种方式在服务器端轻松共享数据

从你对Bertrand的评论中我猜你在寻找我列出的第一个选项


我相信您可以进一步深入了解这些概念,并进入SharePoints“链接部分”框架,在该框架中,只要您链接相同数据类型的输出/输入,就可以进行链接,但这将更难完成。

为什么它们需要单独的小部件?为什么它们甚至需要成为小部件?第一个小部件从哪里获取数据?为什么第二个不能从同一个地方获取数据?@Bertrand Le Roy 3实际上我有这样的要求。方法当第一个小部件使用新值更新时,所有其他小部件都应该使用新值更新。还有一个场景:-我们有第一个具有日期和时间范围等字段的小部件。当我从第一个小部件更新日期时间并导航到下一页时。下一页具有相同的小部件。下一页小部件字段应自动更新为上一页选择的值。希望你能理解我的关心。我是orchard的新手,不知道它的大部分功能。你可以建议我在orchard中使用任何其他方法,谢谢你的小部件从某处获取数据。我的建议是,您的小部件不是从其他小部件获取数据,而是从一个公共的底层公共数据源获取数据。这样,小部件之间就不需要通信了。谢谢@Paul Deveney我同意你使用IDependency。我在iRouteProvider上看到过,它也以同样的方式共享数据。但通过这种方式,我们每次都需要在列表中添加数据,就像他们在Route.cs文件中添加固定路由一样。但在我的情况下,数据是动态出现的,我不知道下一个值是哪个。我们可以在这种情况下应用吗?请帮助我。如果您的数据是“动态的”(没有新的页面请求),那么我提到的JavaScript方法应该是合适的。要么从服务器请求填充共享JSON对象,然后进行js过滤,要么异步加载所有内容(在这种情况下,小部件实际上是某个脚本的框)。IRouteProvider并不是真正相关的(除了它实现了IDependency之外)。如果你想要动态数据,那么从你的数据源获取它。你为实现你自己的接口而编写的代码是你自己控制的。如果你能更好地澄清你的问题,我可能会有所帮助。假设我们有一个小部件和两个字段“开始日期,结束日期",并在具有网格控件的同一页面上具有第二个窗口小部件,以显示员工列表。当用户将从第一个窗口小部件中选择日期时,第二个窗口小部件网格应根据第一个窗口小部件中的所选日期自动更新。如果第二个页面具有员工列表窗口小部件并导航到第二个页面,则还应根据所选日期更新第二个窗口小部件网格上一页的日期。希望您现在明白。感谢您的回复OK-当您说“小部件有开始日期/结束日期”时,我想您的意思是“在普通站点用户使用的前端界面上”,而不是“小部件的管理配置”。如果我理解正确,您希望它“在页面内,跨小部件”和“跨页面请求”。此信息正确吗?(我还想首先问一下,如果您不在Orchard,您会如何解决此问题,因为此解决方案与Orchard关系不大,只是通过“小部件”将信息显示在屏幕上“是的。你是对的。我可以使用querystring和session在页面和小部件之间传递信息。根据我的说法。你还有其他想法请分享吗?”?