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

时间:2015-11-10 13:07:03

标签: javascript jquery asp.net-mvc

我有一个部分网页_Person.cshtml,在我的MainPage1.cshtmlMainPage2.cshtml中显示为模态窗口。我在ready部分页面的_Person.cshtml处理程序中包含此代码:

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

如何知道模式显示在哪个父页面上?基于父页面,我想构建URL并采取一些行动。

3 个答案:

答案 0 :(得分:0)

你可以让你的父页面使用顶部的一些javascript设置一个全局变量,你的部分页面可以从中读取。这样的事情可能有用:

<强> MainPage1.cshtml

<script>
    mainPageName = 'MainPage1';
</script>

<强> MainPage2.cshtml

<script>
    mainPageName = 'MainPage2';
</script>

<强> _Person.cshtml

$(document).ready(function() {
    console.log(mainPageName);
});

请注意,这会使全局命名空间变得混乱,更好的解决方案是使用当前控制器和/或视图的名称在_Layout.cshtml中执行此操作。但这会让你开始。

更好的解决方案是将Model对象传递给Partial视图,其中包含父页面的名称。这更符合ASP.NET MVC的体系结构。

<强> MainPage1.cshtml

@Html.Partial("Person", new { ParentPage = "MainPage1" } )

<强> _Person.cshtml

console.log("@Model.ParentPage");

答案 1 :(得分:0)

要实现此目的,您可以在MainPageX.cshtml的元素上添加一个标识属性,您可以从局部视图中读取该元素。以下是id上使用body的示例:

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

然后在部分:

$(document).ready(function() {
    if ($('body').is('#mainpage1')) {
        // do something...
    } else if ($('body').is('#mainpage2')) {
        // do something else...
    }
})

答案 2 :(得分:0)

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

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