Html 跨多个局部视图使用单个共享图元

Html 跨多个局部视图使用单个共享图元,html,asp.net-mvc-3,partial-views,Html,Asp.net Mvc 3,Partial Views,我有一个基本的ASP.NETMVC3应用程序,它有许多控制器和一些操作(以及随后的视图) 该应用程序的一个常见功能是显示用于基本用户输入的弹出对话框窗口。此对话框过程的关键功能之一是在对话框后面显示褪色的遮罩 每个对话框窗口控件都位于单独的部分视图页面中 现在,一些视图页面可能使用多个对话框,因此在其中包含多个局部视图,这意味着“mask”元素的多个实例 我试图找到的解决方案是,不管我包含多少对话框部分视图,只需要创建一个“mask”元素实例,然后每个部分对话框中的脚本都可以访问该元素(因此基本

我有一个基本的ASP.NETMVC3应用程序,它有许多控制器和一些操作(以及随后的视图)

该应用程序的一个常见功能是显示用于基本用户输入的弹出对话框窗口。此对话框过程的关键功能之一是在对话框后面显示褪色的遮罩

每个对话框窗口控件都位于单独的部分视图页面中

现在,一些视图页面可能使用多个对话框,因此在其中包含多个局部视图,这意味着“mask”元素的多个实例

我试图找到的解决方案是,不管我包含多少对话框部分视图,只需要创建一个“mask”元素实例,然后每个部分对话框中的脚本都可以访问该元素(因此基本上它只需要在页面的某个位置)

到目前为止,我唯一真正想到的是将“mask”元素添加到母版页(或原始视图页),这意味着它只添加一次。这里的问题是,即使不需要它,也会添加它(尽管只有一个小元素)

我可以接受这种情况,但我想知道是否有更好的方法来处理这种情况

我想到的一个快速想法是某种母版页继承层次结构,因此我可能有一个从标准当前母版页继承的DialogMasterPage。对于一种方法来说,这听起来如何


谢谢

我最初的想法是让您使用一些东西,比如它在哪里为您处理掩蔽,或者如果您使用的是自定义的东西,您可以通过ajax加载对话框的内容,然后在母版页上的单个对话框中显示它。

要这样做,如果每个模块都可以在母版页中注册它们对某件事情的需求,那么可以使用
HttpContext
来存储是否需要写入掩码div的标志,并在每个部分中设置该属性。在母版页的末尾,如果设置了标志,则可以写入掩码div(如果其设置为
true


显然,为了让它更干净,您可以将其全部封装在
HtmlHelper
扩展或其他东西中。

谢谢您的回答。我使用JQuery来显示和处理对话框,但我在第一次使用jqueryui对话框时从未使用过它们,所以我更愿意以自己的自定义方式使用它。我想我可以通过每次“show dialog”调用从javascript创建和处理“mask”元素。然后,我可以为我的部分视图包含一个公共javascript库来处理这个问题。等待奖励,如果没有其他人提出更好的建议,我会在几天后奖励。谢谢,我以前也用过同样的方法来注册部分用户对某些javascript库的需求,所以我不会多次写出包含,我认为类似的原则适用于这里。