Я пытаюсь создать счет, используя ITextSharp, и я написал функцию, и она отлично работает при нажатии кнопки. Но когда я вызываю другой метод в том же контроллере, он не работает. Вот код:
Контроллер
[HttpPost]
public void Success(SampleModel model)
{
int[] matids = Array.ConvertAll(model.mid, int.Parse);
int[] mcounts = Array.ConvertAll(model.count, int.Parse);
int[] mprizes = Array.ConvertAll(model.iprizes, int.Parse);
string companyName = "Bombay Botique";
string orderNo = model.oid;
string address=model.address;
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[5] {
new DataColumn("ProductId", typeof(string)),
new DataColumn("Product", typeof(string)),
new DataColumn("Price", typeof(string)),
new DataColumn("Quantity", typeof(int)),
new DataColumn("Total", typeof(int))});
for (int i = 0; i < matids.Length; i++)
{
dt.Rows.Add(matids[i], model.inames[i], mprizes[i], mcounts[i],mprizes[i]*mcounts[i]);
}
StringBuilder sb = new StringBuilder();
//Generate Invoice (Bill) Header.
sb.Append("<table width='100%' cellspacing='0' cellpadding='2'>");
sb.Append("<tr><td align='center' style='background-color: #18B5F0' colspan = '2'><b>Order Sheet</b></td></tr>");
sb.Append("<tr><td colspan = '2'></td></tr>");
sb.Append("<tr><td><b>Order No: </b>");
sb.Append(orderNo);
sb.Append("</td><td align = 'right'><b>Date: </b>");
sb.Append(DateTime.Now);
sb.Append(" </td></tr>");
sb.Append("<tr><td colspan = '2'><b>Company Name: </b>");
sb.Append(companyName);
sb.Append("</td></tr>");
sb.Append("<tr><td colspan = '2'><b>Delivery Address: </b>");
sb.Append(address);
sb.Append("</td></tr>");
sb.Append("</table>");
sb.Append("<br />");
//Generate Invoice (Bill) Items Grid.
sb.Append("<table border = '1'>");
sb.Append("<tr>");
foreach (DataColumn column in dt.Columns)
{
sb.Append("<th style = 'background-color: #D20B0C;color:#ffffff'>");
sb.Append(column.ColumnName);
sb.Append("</th>");
}
sb.Append("</tr>");
foreach (DataRow row in dt.Rows)
{
sb.Append("<tr>");
foreach (DataColumn column in dt.Columns)
{
sb.Append("<td>");
sb.Append(row[column]);
sb.Append("</td>");
}
sb.Append("</tr>");
}
sb.Append("<tr><td align = 'right' colspan = '");
sb.Append(dt.Columns.Count - 1);
sb.Append("'>Total</td>");
sb.Append("<td>");
sb.Append(dt.Compute("sum(Total)", ""));
sb.Append("</td>");
sb.Append("</tr></table>");
HtmlDocument doc = new HtmlDocument();
doc.OptionWriteEmptyNodes = true;
//doc.OptionFixNestedTags = true;
doc.LoadHtml(sb.ToString());
string htmls = doc.DocumentNode.OuterHtml;
using (MemoryStream stream = new System.IO.MemoryStream())
{
StringReader sr = new StringReader(htmls);
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
XMLWorkerHelper worker = XMLWorkerHelper.GetInstance();
pdfDoc.Open();
iTextSharp.text.Image addLogo = default(iTextSharp.text.Image);
addLogo = iTextSharp.text.Image.GetInstance(Server.MapPath("~") + "/images/bblogo.png");
string strFileShortName = "Invoice" + DateTime.Now.Ticks + ".pdf";
addLogo.ScaleToFit(128, 37);
pdfDoc.Add(addLogo);
pdfDoc.Add(new Chunk(""));
// XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
worker.ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close();
return File(stream.ToArray(), "application/pdf", "Invoice_" + orderNo + ".pdf");
}
не знаю, почему он не работает при вызове функции из контроллера, а не из представления