Asp.net-Mvc-3

如何從控制器的方法在新選項 卡中打開 cshtml 文件?

  • June 27, 2017

我正在開發 Nopcommerce,需要生成發票(定制的不是他們已經提供的,因為它不能解決我們的目的)。我們需要使用控制器的方法在新選項​​卡(使用另一個 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>

我必鬚髮布數據以獲取 probableDeliveryDate 的值到控制器方法,然後想在新選項卡中打開視圖。

我怎樣才能做到這一點?

如果您通過 Html.ActionLink 從第一頁進入操作,您可以這樣做:

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

指定 target = “_blank” 將在新選項卡中打開

更新

由於您將模型發佈到控制器(我希望 RedirectToAction 可以幫助打開一個新視窗/選項卡,但事實並非如此)

我的感覺很刺痛你的流量……這只是我,但我會做一些不同的事情……比如

  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" });
   } 
}

引用自:https://stackoverflow.com/questions/10563531