在多个部分视图中使用单个共享元素

时间:2011-10-31 15:40:22

标签: html asp.net-mvc-3 partial-views

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

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

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

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

我想要找到的解决方案是只需要创建一个“mask”元素的实例,而不管我包含的对话框部分视图的数量,然后每个部分对话框中的脚本都可以访问这个元素(所以基本上它只需要在某个页面上)

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

我可以忍受这个,但我想知道是否有更好的方法来处理这些情景?

想到一个快速的想法是某种主页继承层次结构,所以我可能有一个继承自标准当前母版页的DialogMasterPage。这听起来怎么样?

由于

2 个答案:

答案 0 :(得分:1)

要做到这样的事情,每个模块都可以在主页面中注册他们对某个东西的需求,你可以使用HttpContext来存储一个标志,表明你是否需要编写掩码div,并且只需设置每个部分的财产。在母版页的末尾,如果设置了标志,则可以将掩码div设置为true

显然,为了让它变得更干净,你可以将它全部包裹在HtmlHelper扩展名中。

答案 1 :(得分:0)

我最初的想法是让你使用像jQuery UI之类的东西来处理你的屏蔽,或者如果你使用的是自定义的东西你可以通过ajax加载对话框的内容然后在单个对话框中显示它母版页。