2012-05-12 12 views
10

Pracuję nad Nopcommerce i muszę generować faktury (niestandardowe wykonane nie jako to, co już zapewniają, ponieważ to po prostu nie rozwiązuje naszego celu). Musimy wygenerować fakturę w nowej karcie (przy użyciu innego pliku cshtml) przy użyciu metody kontrolera również przekazuję dane modelu w widoku.Jak otworzyć plik cshtml w nowej karcie z metody kontrolera?

<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> 

Mam do wysłania danych, aby uzyskać wartość probableDeliveryDate do kontrolera metody, a potem chce otworzyć widok w nowej karcie.

Jak mogę to zrobić?

Odpowiedz

14

Jeśli dostanie się do akcji z pierwszej strony poprzez Html.ActionLink można to zrobić:

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

Określanie target = „_blank” otworzy się w nowej karcie

aktualizacji

Od Piszesz modelu do sterownika (ja ufałem RedirectToAction może pomóc otworzyć nowe okno/kartę, ale to nie wygląda, aby być przypadek)

Moja Spidy sens mrowienie na przepływie masz tho ... To tylko ja, ale chciałbym zrobić coś innego .. tak jak

  1. Napisz modelu do kontrolera
  2. zapisać dane, które generuje fakturę
  3. Zwraca InvoiceID działaniu
  4. Dodaj InvoiceID do modelu
  5. Wyślij model z powrotem do widoku
  6. poinformować użytkownika, że ​​
  7. faktura została wygenerowana i wykazują związek - jak wyżej - który pozwala użytkownikowi na otwarcie faktury lub
  8. ten stanowi doskonałą czystą rozwiązania przedstawiają model błędy, jeśli były jakieś

Państwa zdanie mogłoby mieć kawałek kodu brzytwa że zrobił:

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

Ok, szukałem, aby zobaczyć czy RedirectToAction miał możliwość ustawiania atrybutów hTML i otworzyć nowy widok, ale to nie wygląda na przypadek. –

+0

Czy istnieje inny sposób? –

+0

Zaktualizowałem odpowiedź, aby pokazać inny możliwy sposób. –

Powiązane problemy