Печать данных модели без сохранения - PullRequest
0 голосов
/ 29 декабря 2018
 if (saleDetails.length) {        
        var htmlData;
        var paymentStatus = 0;
        if ($('#PaymentStatus option:selected').val() != 0) {
            paymentStatus = $('#PaymentStatus option:selected').text()
        }
        var SaleAmount = parseFloat(total + vat).toFixed(2);
        var data = {
            'AccountID': $('#hdnAccountID').val(),
            'QuoteID': $('#hdnQuoteID').val(),
            'BranchID': $('#BranchID option:selected').val(),
            'PONO': $('#PONO').val(),
            'PaymentStatus': $('#PaymentStatus').val(),
            'SalesDate': $('#SaleDate').val(),
            'PaymentStatus': paymentStatus,
            'PaymentTypeID': $('#PaymentType option:selected').val(),
            'VAT': vat,
            'TotalAmount': invoiceAmount,
            'DiscountAmount': $('#discInput').val(),
            'AmountPaid': $('#amountPaid').val(),
            'SaleDetails': saleDetails
        };
        var json = JSON.stringify({ 'model': data });

public ActionResult printOrder(Models.DTO.Sales model)
        {
            return PartialView(model);
            //return View(model);            
        }

Я работаю над POS. В клиенте по продажам требуется, чтобы мы предоставили ему опцию печати, чтобы, если клиент нажимал кнопку «Печать», мы открывали новую вкладку и отображали счет, чтобы клиент мог вынутьраспечатать, и если клиент заплатит ему, клиент сохранит SalesOrder.Проблема, с которой я сталкиваюсь, заключается в том, что я не могу открыть новую вкладку с контроллера.И если я пытаюсь сделать это из сценария Java, я не могу передать модель для просмотра из сценария Java.Поэтому, пожалуйста, помогите мне в этом вопросе, так как я не слишком разбираюсь в MVC.

1 Ответ

0 голосов
/ 30 декабря 2018

Вы можете использовать Html.ActionLink , чтобы открыть страницу в новой вкладке со своей страницы Razor, как показано ниже.

@Html.ActionLink("Print", "Action", new { controller="PrintOrder" }, new { target="_blank" })

Html.ActionLink однако не позволяет пропускать сложные объекты,Вы можете использовать трюк, как упомянуто в этом stackoverflow ответе, чтобы передать вашу модель.Из поста:

МОДЕЛЬ: сделать статические методы сериализации и десериализации в классе, такие как

public class XYZ { 
  // Some Fields
  public string X { get; set; }
  public string Y { get; set; }
  public string X { get; set; }

  // This will convert the passed XYZ object to JSON string
  public static string Serialize(XYZ xyz)
  {
      var serializer = new JavaScriptSerializer();
      return serializer.Serialize(xyz);
  }

  // This will convert the passed JSON string back to XYZ object
  public static XYZ Deserialize(string data)
  {
      var serializer = new JavaScriptSerializer();
      return serializer.Deserialize<XYZ>(data);
  }
} 

ПРОСМОТР: Теперь преобразовать ваш сложный объект в строку JSON перед передачей его в

Action View <%= Html.ActionLink(Model.x, "SomeAction", new { modelString = XYZ.Serialize(Model) })%>

КОНТРОЛЛЕР: получить объект как строку в методе Action и преобразовать его обратно в объект до

 using public ActionResult SomeAction(string modelString) { XYX xyz = XYX.Deserialize(modelString); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...