2011-10-17 16 views
7

Mam kontroler i akcję. ta czynność polega na zapisaniu danych w bazie danych. a teraz, kiedy chcę przesłać przycisk, mój kontroler wykonuje akcję i otwiera nowe okno.Aktywacja kontrolera ASP.Net MVC 3 i otwarcie nowego okna

public ActionResult New(FormCollection collection) 
    { 

     data.Population_Code = collection["Countrys[0].CountryCode"]; 
     data.Population_Desc = collection["Countrys[0].CountryDesc"]; 
     data.Population_Grouping = collection["Countrys[0].CountryGroup"]; 
     data.Population_Type = "CNTRY"; 
     data.Population_Redudant = "N"; 
     data.Population_Modified_At = officeCode.User_Office.ToString(); 
     db.SaveChanges(); 

     //example for new window 
     //window.open('/Report/New.aspx') 

     return RedirectToAction("index"); 
    } 

, więc mój kontroler wykonał akcję i otworzył nowe okno.

ktoś może mi pomóc?

dzięki

Odpowiedz

16

Technicznie można to zrobić poprzez odesłanie JavaScript, które zostanie otwarte nowe okno.

Jednak większość przeglądarek zabija nowe okno wywoływane w ten sposób (np. Blokowanie wyskakujących okienek).

Lepiej byłoby, jeśli to możliwe, otworzyć link do akcji w nowym oknie od samego początku;

@Html.ActionLink("New report", "New", "Report", null, new {target = "_blank"}) 

Edit

widzę ze swojego działania, to prawdopodobnie jest to forma, która tworzy raport; możesz również użyć atrybutu target='_blank' w formularzu.

+0

dzięki Matt, tak, to jest pokazanie raportu. właściwie, mam raport menu. ale teraz mój szef mówi mi, żebym zrobił coś w stylu, kiedy kontroler wykona nową akcję, pokaże raport w nowym oknie. a teraz nie wiem, jak uzyskać wartość dodaną. zobacz edit –

+0

Tak, możesz użyć próbki actionlink, aby utworzyć łącze menu. To po prostu otwiera nowe okno * przed * wywołaniem akcji, która może następnie zapisać dane i otworzyć widok raportu. –

+0

dzięki, zrobiłem mój problem. Używam plików cookie do przechowywania batchId. –

Powiązane problemy