我已经尝试了一段时间以在ASP.NET Core MVC 2.2的IFrame中呈现剃刀页面。
我有我的主页和一些应该在IFrame中打开特定页面的菜单。
打开我的主屏幕的操作是这个。
[HttpGet]
public IActionResult IndexAdm()
{
try
{
return View();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
这里是将部分视图加载到我的屏幕上的代码。
public PartialViewResult IframeAction(string sortBy)
{
if (sortBy == null)
return PartialView("../Company/ViewPartial");
else
{
return PartialView(sortBy);
}
}
我的页面第一次加载时,一切正常。加载主页,另一页加载到我的iframe中,如下图所示。
[我想得到的是上面发生的事情,但是当我单击菜单按钮时,主页消失了,浏览器中仅加载了我的部分页面,如下图所示。
我的菜单项代码很低。
<li>
<a class="nav-link" href="#">
<i class="fas fa-question"></i>
@Html.ActionLink("FAQ", "IframeAction", "Company", new { sortBy = "../Company/ViewPartial" }, null)@*https://www.codeproject.com/Questions/1221703/How-do-I-update-an-iframe-using-ASP-NET-core*@
</a>
</li>
下面是我的IFrame代码。
<iframe id="IframeAdm" name="IFrameAdm" width="100%" height="85%" border="none" src="/Company/IframeAction"></iframe>
如何在我的iframe中呈现部分页面而又不丢失主页?
@Html.ActionLink
将创建一个<a>
标记,该标记将用作重定向到上述页面的链接。根据您的用例,看起来您可能想利用aspnet核心的布局功能以及部分视图。您可以检查this link。
如果您必须但是更新iframe,则需要使用javascript更新iframe的src。由于您使用的是.net core 2.2,因此已经导入了jquery。您可以使用以下jquery
function navigate(path) {
$("#IframeAdm").attr('src', path);
}
现在,在菜单项中,您可以执行以下操作:
<li>
<a class="nav-link" href="#" onclick="navigate(@Url.Content("your/path/here"))">
<i class="fas fa-question"></i>
</a>
</li>