2012-12-20 83 views
6

我有一個ActionResult調用另一個的ActionResult。MVC的ActionResult呼叫其他的ActionResult

我在我的case語句一個ActionResult調用不工作。以下是我有:

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

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

     return actionResult; 
     } 

我收到以下錯誤:「的ActionResult」如果我做了它的工作原理,但不遵循不會在目前情況下

存在相當我需要的東西:

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

如何得到的ActionResult在我的case語句的工作,使得它是可見的,當我做

return actionResult 
+0

你認爲'RedirectToAction'? – MilkyWayJoe

回答

8

就先聲明它(有一個默認值,我猜),switch語句之外:

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

return actionResult ?? new View(); 

注:我添加了?? new View()爲默認值,如果沒有的情況下,分配什麼actionResult - 根據需要進行修改。

+2

賦值爲空是多餘的。 – Kugel

+4

@Kugel不,這不是,你要的東西分配給它,或者你會得到一個'使用編譯器錯誤的未分配的局部變量「的ActionResult」'。 – McGarnagle

+1

@Kugel好了,準確的說,你可以* *不予以定義,如果*每*的情況下分配的東西,但是這不是作品所呈現的情況。 – McGarnagle

0

問題是可變範圍。 dbaseman幾乎沒有錯......執行此操作:

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

你需要聲明'的ActionResult = null'或者你會得到一個'使用編譯器錯誤的未分配的局部變量「的ActionResult」'。 –