我有一个部分网页_Person.cshtml
,在我的MainPage1.cshtml
和MainPage2.cshtml
中显示为模态窗口。我在ready
部分页面的_Person.cshtml
处理程序中包含此代码:
$(document).ready(function() {
//some code here
})
如何知道模式显示在哪个父页面上?基于父页面,我想构建URL并采取一些行动。
答案 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中访问它。
因此,您将在部分页面上获取父页面的名称。