如何从控制器的方法在新选项卡中打开cshtml文件?

Dha*_*ari 10 asp.net-mvc-3

我正在开发Nopcommerce,需要生成Invoice(定制不是他们已经提供的,因为它不能解决我们的目的).我们需要使用Controller的方法在新选项卡中生成Invoice(使用另一个cshtml文件),我也在视图上传递模型数据.

<tr>
        <td class="adminTitle">
            @Html.NopLabelFor(model => model.ProbableDeliveryDate):
        </td>
        <td class="adminData">
            @Html.EditorFor(model=>model.ProbableDeliveryDate)
        </td>
        </tr>
        <tr>
            <td>
            @if(Model.CanGenrateInvoice)
            {
                 <input type="submit" name="generateinvoice" value="@T("Admin.Orders.Fields.generateinvoice")" id="generateinvoice" class="adminButton"  />
            }
            </td>
        </tr>
Run Code Online (Sandbox Code Playgroud)

我要发布数据以获取probableDeliveryDate的值到控制器方法,之后想要在新选项卡中打开视图.

我怎样才能做到这一点?

CD *_*ith 14

如果您通过Html.ActionLink从第一页开始执行操作,则可以执行以下操作:

Html.ActionLink("Open Invoice", "ActionName","ControllerName", new { id = Model.InvoiceID }, new { target = "_blank" });
Run Code Online (Sandbox Code Playgroud)

指定target ="_ blank"将在新选项卡中打开

更新

由于您将模型发布到控制器(我希望RedirectToAction可以帮助打开一个新窗口/选项卡,但看起来不是这样)

我的spidy感觉刺痛了你的流量......这只是我,但我会做一些不同的事情......比如

  1. 将模型发布到控制器
  2. 保存生成发票的数据
  3. 将InvoiceID返回到操作
  4. 将InvoiceID添加到模型中
  5. 将模型发送回视图
  6. 告知用户
  7. 生成发票并显示链接 - 如上所述 - 允许用户打开发票或
  8. 这提供了完美的清洁解决方案,以显示模型错误,如果有的话

您的视图可能有一段剃刀代码可以做到:

@{
    if(Model.InvoiceID != null && Model.InvoiceID !=0) {
        @Html.ActionLink("Open Invoice", "ActionName","ControllerName", new { id = Model.InvoiceID }, new { target = "_blank" });
    } 
}
Run Code Online (Sandbox Code Playgroud)