2012-12-20 18 views
6

Mam ActionResult wywoływanie innego ActionResult.MVC ActionResult wywołanie innego ActionResult

Mam wywołanie ActionResult w moim przypadku, który nie działa. Oto co mam:

public ActionResult GetReport(string pNum) 
    { 
    .... 

     switch (methodId) 
     { 
      case 1: 
      case 5:     
      { 
      var actionResult = GetP1Report("33996",false) as ActionResult; 
       break; 
      } 
     } 

     return actionResult; 
     } 

pojawia się następujący błąd: „ActionResult” nie istnieje w bieżącym kontekście

Gdybym wykonaj następujące czynności to działa, ale nie całkiem to, czego potrzebuję:

public ActionResult GetReport(string pNum) 
    { 
     .... 

     var actionResult = GetP1Report("33996",false) as ActionResult; 

     switch (methodId) 
     { 
      case 1: 
      case 5:     
      { 
      // var actionResult = GetP1Report("33996",false) as ActionResult; 
       break; 
      } 
     } 

     return actionResult; 
     } 

Jak mogę uzyskać ActionResult pracować w moim przypadku takim stwierdzeniem, że jest to widoczne, gdy robię

return actionResult 
+0

czy rozważałeś "RedirectToAction"? – MilkyWayJoe

Odpowiedz

8

Wystarczy zadeklarować go najpierw (o wartości domyślnej, chyba), poza switch:

ActionResult actionResult = null; 
switch (methodId) 
    { 
     case 1: 
     case 5: // PVT, PVT-WMT 
     { 
      actionResult = GetP1Report("33996",false) as ActionResult; 
      break; 
     } 
    } 

return actionResult ?? new View(); 

Uwaga: Dodałem ?? new View() jako wartość domyślną, w przypadku gdy żaden z przypadków przypisać niczego actionResult - zmodyfikuj to w razie potrzeby.

+2

Przypisanie do wartości null jest zbędne. – Kugel

+4

@Kugel no nie, musisz coś do niego przypisać, lub otrzymasz błąd "użyj nieprzypisanej zmiennej lokalnej" actionResult "' kompilator. – McGarnagle

+1

@Kugel dobrze, by być dokładnym, możesz * pozostawić to niezdefiniowane, jeśli * co * przypadek coś mu przypisuje, ale tak nie jest w przypadku OP. – McGarnagle

0

Problem to zakres zmienny. dbaseman prawie miał rację ... zrób to:

public ActionResult GetReport(string pNum) 
{ 
.... 

    ActionResult actionResult = new View(); // This would typically be assigned a 
             // default ActionResult 
    switch (methodId) 
    { 
     case 1: 
     case 5:     
     { 
      actionResult = GetP1Report("33996",false) as ActionResult; 
      break; 
     } 
    } 

    return actionResult; 
} 
+1

Musisz zadeklarować 'actionResult = null' lub otrzymasz' use nieprzypisaną zmienną lokalną "actionResult" 'błąd kompilatora. –

Powiązane problemy