如何在javascript中找到部分页面的父页面

如何在javascript中找到部分页面的父页面,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有一个部分页面,\u Person.cshtml,它在我的MainPage1.cshtml和MainPage2.cshtml中显示为模式窗口。我在\u Person.cshtml部分页面的ready处理程序中有此代码: $(document).ready(function() { //some code here }) 如何知道显示模式的父页面?基于父页面,我想构造URL并采取一些措施。您可以让父页面在顶部使用一些javascript设置一个全局变量,您的部分页面可以从中读取。类似的

我有一个部分页面,
\u Person.cshtml
,它在我的
MainPage1.cshtml
MainPage2.cshtml
中显示为模式窗口。我在
\u Person.cshtml
部分页面的
ready
处理程序中有此代码:

$(document).ready(function() {
    //some code here
})

如何知道显示模式的父页面?基于父页面,我想构造URL并采取一些措施。

您可以让父页面在顶部使用一些javascript设置一个全局变量,您的部分页面可以从中读取。类似的方法可能会奏效:

MainPage1.cshtml

<script>
    mainPageName = 'MainPage1';
</script>
<script>
    mainPageName = 'MainPage2';
</script>
$(document).ready(function() {
    console.log(mainPageName);
});
@Html.Partial("Person", new { ParentPage = "MainPage1" } )
console.log("@Model.ParentPage");
请注意,这会使全局名称空间变得混乱,更好的解决方案是使用当前控制器和/或视图的名称在_Layout.cshtml中执行此操作。但这会让你开始

更好的解决方案是将
模型
对象传递给包含父页面名称的局部视图。这更符合ASP.NET MVC的体系结构

MainPage1.cshtml

<script>
    mainPageName = 'MainPage1';
</script>
<script>
    mainPageName = 'MainPage2';
</script>
$(document).ready(function() {
    console.log(mainPageName);
});
@Html.Partial("Person", new { ParentPage = "MainPage1" } )
console.log("@Model.ParentPage");
\u Person.cshtml

<script>
    mainPageName = 'MainPage1';
</script>
<script>
    mainPageName = 'MainPage2';
</script>
$(document).ready(function() {
    console.log(mainPageName);
});
@Html.Partial("Person", new { ParentPage = "MainPage1" } )
console.log("@Model.ParentPage");

您可以让您的父页面在顶部使用一些javascript设置一个全局变量,您的部分页面可以从中读取。类似的方法可能会奏效:

MainPage1.cshtml

<script>
    mainPageName = 'MainPage1';
</script>
<script>
    mainPageName = 'MainPage2';
</script>
$(document).ready(function() {
    console.log(mainPageName);
});
@Html.Partial("Person", new { ParentPage = "MainPage1" } )
console.log("@Model.ParentPage");
请注意,这会使全局名称空间变得混乱,更好的解决方案是使用当前控制器和/或视图的名称在_Layout.cshtml中执行此操作。但这会让你开始

更好的解决方案是将
模型
对象传递给包含父页面名称的局部视图。这更符合ASP.NET MVC的体系结构

MainPage1.cshtml

<script>
    mainPageName = 'MainPage1';
</script>
<script>
    mainPageName = 'MainPage2';
</script>
$(document).ready(function() {
    console.log(mainPageName);
});
@Html.Partial("Person", new { ParentPage = "MainPage1" } )
console.log("@Model.ParentPage");
\u Person.cshtml

<script>
    mainPageName = 'MainPage1';
</script>
<script>
    mainPageName = 'MainPage2';
</script>
$(document).ready(function() {
    console.log(mainPageName);
});
@Html.Partial("Person", new { ParentPage = "MainPage1" } )
console.log("@Model.ParentPage");

为了实现这一点,您可以在
MainPageX.cshtml
的元素上放置一个标识属性,您可以从局部视图中读取该属性。下面是一个在
主体上使用
id
的示例:

<body id="mainpage1">
    <!-- your content -->
</body>

为了实现这一点,您可以在
MainPageX.cshtml
的元素上放置一个标识属性,您可以从局部视图中读取该属性。下面是一个在
主体上使用
id
的示例:

<body id="mainpage1">
    <!-- your content -->
</body>

从父页面调用模式url时,将父页面的名称传递给控制器,并将其存储在ViewBag中,我们可以在部分cshtml中访问它


因此,您将在部分页面上获得父页面的名称。

从父页面调用模式url时,将父页面的名称传递给控制器,并将其存储在ViewBag中,我们可以在部分cshtml中访问该视图


因此,您将在部分页面上获得父页面的名称。

您是否使用
iframe
?ASP.NET MVC中的部分视图是内联呈现的,而不是作为iframe。您是否使用
iframe
?ASP.NET MVC中的部分视图是内联呈现的,而不是作为iframe。大多数情况下,
body
元素位于
\u布局中,所以这需要一些额外的魔法。。。但是最好使用
id
属性!谢谢使用
body
只是一个例子,您可以将属性放在
MainPage.cshtml
中可用的任何元素上,并在局部视图中使用适当的选择器。
body
元素大多数时候位于
\u布局中,因此需要一些额外的魔法。。。但是最好使用
id
属性!谢谢使用
body
只是一个例子,您可以将属性放在
MainPage.cshtml
中可用的任何元素上,并在局部视图中使用适当的选择器。