如何在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
中可用的任何元素上,并在局部视图中使用适当的选择器。