Как открыть файл cshtml в новой вкладке из метода контроллера?

Я работаю над Nopcommerce и вам нужно создать счет-фактуру (выполненный не так, как они уже предоставляют, потому что это просто не решает нашу цель). Нам нужно создать счет-фактуру в новой вкладке (используя другой файл cshtml), используя метод Controller, я также передаю данные модели на просмотр.

<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 для контроллера, и после этого хочу открыть представление на новой вкладке.

Как я могу это сделать?

Ответ 1

Если вы получаете действие с первой страницы через Html.ActionLink, вы можете сделать это:

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

Задание цели = "_blank" откроется на новой вкладке

Обновление

Поскольку вы отправляете модель на контроллер (я надеялся, что RedirectToAction может открыть новое окно/вкладку, но это не выглядит так)

Мое spidy чувство покалывает в потоке, который у вас есть... Это только я, но я бы сделал что-то немного другое... например

  • Отправьте модель контроллеру
  • Сохраните данные, которые генерируют счет-фактуру
  • Верните InvoiceID в действие
  • Добавить InvoiceID в модель
  • Отправьте модель обратно в представление
  • Сообщите пользователю, что
  • сгенерирован счет-фактура и показана ссылка, как указано выше, которая позволяет пользователю открывать счет-фактуру ИЛИ
  • это обеспечивает идеальное чистое решение для отображения ошибок модели, если они были

В вашем представлении может быть фрагмент кода бритвы, который сделал это:

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