2013-02-26 253 views
0

這裏使用ViewBag是在我的控制器代碼:在switch語句

public ActionResult MyMethod(string widgetId) 
    { 
     ViewBag.Widget = widgetId; 
     ViewData["widget"] = widgetId; 
     return View(); 
    } 

,這裏是我的嘗試在switch語句:

var sort = <%=(string)ViewBag.Widget.ToString() %>; 
    //switch (<%=(string)ViewData["widget"] %>) { 
    switch (sort) {    
     case 'a1': 

      break; 
     case 'a2': 

      break; 
     case 'a3': 

    } 

在我的情況下,爲widgetid是「 a3'

並且它拋出a3未定義的錯誤。如何解決這個問題?我

回答

2

我假設這是JavaScript和服務器值被寫入到輸出:

// you were missing quotes around the value of "sort" 
// (single or double quotes are fine since this is JS) 

var sort = "<%= ViewBag.Widget.ToString() %>"; 
alert(sort); 

switch (sort) {    
    case 'a1': 
     break; 

    case 'a2': 
     break; 

    case 'a3': 
     break; 
} 
0

你錯過了周圍的JS字符串引號。所以服務器通過價值a3未定義在客戶端。

var sort = '<%=(string)ViewBag.Widget.ToString() %>'; 
1

在JavaScript中工作時,你應該在下面的方式來使用它..

var sort = "<%=ViewBag.Widget.ToString() %>"; 

考慮您的viewbag值作爲 「A3」 上面的語句會產生

var sort = "a3"; // so JS could evaluate it as string. 

在以前的聲明它正在生產如下

var sort = a3; // Where JS was not having any idea about what a3 is 
+0

+1顯示爲什麼它不起作用('var sort = a3;') – 2013-02-26 09:26:46