Asp.net-Mvc-3
如何從控制器的方法在新選項 卡中打開 cshtml 文件?
我正在開發 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 可以幫助打開一個新視窗/選項卡,但事實並非如此)
我的感覺很刺痛你的流量……這只是我,但我會做一些不同的事情……比如
- 將模型發佈到控制器
- 保存生成發票的數據
- 將 InvoiceID 返回給操作
- 將 InvoiceID 添加到模型
- 將模型發送回視圖
- 通知使用者
- 發票已生成並顯示一個連結 - 如上所述 - 允許使用者打開發票或
- 這提供了完美的干淨解決方案來顯示模型錯誤(如果有)
您的視圖可能有一段剃刀程式碼可以做到這一點:
@{ if(Model.InvoiceID != null && Model.InvoiceID !=0) { @Html.ActionLink("Open Invoice", "ActionName","ControllerName", new { id = Model.InvoiceID }, new { target = "_blank" }); } }