2013-02-26 3 views
0

Вот код в мой контроллер:Использование ViewBag в распределительном заявлении

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

А вот то, что я пытался в распределительном заявление:

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;') –

Смежные вопросы