Сценарий: есть три вида (Razor) с именами «InvoiceBill», «Index», «Create».
- Представление «Создать» содержит страницу формы для ввода данных счета.
- Страница «Индекс» содержит список всех счетов-фактур на текущую дату.
- Счет-фактура содержиткод, который генерирует документ Excel (в виде отчета по счету) на основе этой ссылки (http://forums.asp.net/t/1711971.aspx/1).
. После того, как я отправлю форму (Создать представление), он может опубликовать данные формы в БД (используя EF)После вставки данных возвращается страница индекса.
Но теперь мне нужно вызвать представление «InvoiceBill» перед вызовом страницы индекса.
[HttpPost]
public ActionResult Create(FormCollection collection, InvoiceViewModel INVViewModel)
{
if ((collection != null) && (this.ModelState.IsValid))
{
salesOrder.AccountNumber = INVViewModel.AccountNumber;
salesOrder.BillToAddressID = INVViewModel.BillToAddressID;
salesOrder.Comment = INVViewModel.Comment;
salesOrder.ContactID = INVViewModel.ContactID;
.
.
.
.
int sID = Using<CreateSalesOrder>().Execute(0, salesOrder);
***** From here i need to call the InvoiceBill page. Or guide me any other good way to achieve this
return RedirectToAction("Index");
}
}
Сейчас я достигаю этогос некоторыми обходными путями. Но я чувствую, что это нехорошо. Скажите, пожалуйста, как я могу добиться этого правильным образом? СпасибоInvoiceReport.cshtml
@model eItemBox.Web.Models.InvoiceReportViewModel
@{
Layout = null;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=" + Model.InvoiceBillName);
//Content-Disposition is defined in RFC-2183
}
<Worksheet ss:Name="MyInvoice">
.
.
.
</Workbook>