在控制器的新窗口中打开mvc视图

有没有办法在新窗口中从控制器操作中打开视图?

public ActionResult NewWindow() { // some code return View(); } 

我怎么会得到NewWindow.cshtml视图打开一个新的浏览器选项卡?

我知道如何从视图中的链接 – 这不是问题。 有没有人想出一个办法从控制器的行动呢?

这不能从控制器本身,而是从你的视图。 就我所见,你有两个select:

  1. 使用“_blank”属性来装饰链接(使用HTML helper和直HMTL语法的示例)

    • @Html.ActionLink("linkText", "Action", new {controller="Controller"}, new {target="_blank"})
    • <a href="@Url.Action("Action", "Controller")" target="_blank">Link Text</a>
  2. 使用Javascript打开一个新窗口

    window.open("Link URL")

你也可以在表单中使用Tommy的方法:

 @using (Html.BeginForm("Action", "Controller", FormMethod.Get, new { target = "_blank" })) { //code } 

你问的是错误的问题。 代码隐藏(控制器)与前端没有任何关系。 实际上,这就是MVC的优势 – 您将代码/概念从视图中分离出来。

如果您想在新窗口中打开某个操作,那么指向该操作的链接需要通知浏览器在单击时打开一个新窗口。

一个伪示例: <a href="NewWindow" target="_new">Click Me</a>

这就是它的一切。 设置该行动的链接的目标。

是的,你可以做一些棘手的工作来模拟你想要的:

1)通过ajax从视图中调用你的控制器。 2)返回您的视图

3)在$ .ajax请求success (或者可能是error !错误适用于我!)部分中使用类似下面的内容:

 $("#imgPrint").click(function () { $.ajax({ url: ..., type: 'POST', dataType: 'json', data: $("#frm").serialize(), success: function (data, textStatus, jqXHR) { //Here it is: //Gets the model state var isValid = '@Html.Raw(Json.Encode(ViewData.ModelState.IsValid))'; // checks that model is valid if (isValid == 'true') { //open new tab or window - according to configs of browser var w = window.open(); //put what controller gave in the new tab or win $(w.document.body).html(jqXHR.responseText); } $("#imgSpinner1").hide(); }, error: function (jqXHR, textStatus, errorThrown) { // And here it is for error section. //Pay attention to different order of //parameters of success and error sections! var isValid = '@Html.Raw(Json.Encode(ViewData.ModelState.IsValid))'; if (isValid == 'true') { var w = window.open(); $(w.document.body).html(jqXHR.responseText); } $("#imgSpinner1").hide(); }, beforeSend: function () { $("#imgSpinner1").show(); }, complete: function () { $("#imgSpinner1").hide(); } }); }); 
 @Html.ActionLink("linkText", "Action", new {controller="Controller"}, new {target="_blank",@class="edit"}) script below will open the action view url in a new window <script type="text/javascript"> $(function (){ $('a.edit').click(function () { var url = $(this).attr('href'); window.open(url, "popupWindow", "width=600,height=800,scrollbars=yes"); }); return false; }); </script>