首页 > 解决方案 > ASP.NET Core MVC 可以在不使用控制器的情况下在新选项卡中打开视图吗?

问题描述

例如:我有一个控制器返回的视图,它接收一个对象,在这个视图中,我有一个按钮来打开一个新视图,该视图与调用它的视图具有相同的对象。

如果我在隐藏的 div 中使用 Html.RenderPartial,我可以在按钮上单击使用调用者视图模型打开的新视图,而无需使用控制器。

我想要的是改为在隐藏容器中显示新视图,如果有可能单击按钮以在新选项卡上显示视图?

此致

标签: javascriptc#asp.net-mvcasp.net-corerazor

解决方案


我的想法还是把这个PartialView放在一个隐藏的div里面,然后用window.open方法打开一个新的tab,把这个div放进去。下面是一个简单的测试:

主视图

@model User

<div id="partialview" style="display: none">
    @{await Html.RenderPartialAsync("MyPartialView", Model);}
</div>

<input type="button" id="btn" value="NewTab" />

@section scripts{ 

    <script>
    $("#btn").click(function () {
        var newTab = window.open("", "_blank", "", true);
        newTab.document.body.innerHTML = $("#partialview").html();
    })
    </script>

}

局部视图

@model User

<h3>User</h3>

<div>
    @Html.DisplayNameFor(m => m.Id)
    <input asp-for="@Model.Id" />
</div>
<div>
    @Html.DisplayNameFor(m => m.UserName)
    <input asp-for="@Model.UserName" />
</div>

结果:

在此处输入图像描述


推荐阅读