在switch语句中使用ViewBag

时间:2013-02-26 08:54:46

标签: javascript asp.net-mvc switch-statement viewdata viewbag

以下是我的控制器中的代码:

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未定义的错误。如何解决这个问题?我

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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

答案 2 :(得分:0)

你错过了js字符串周围的引号。因此传递值a3的服务器在客户端未定义。

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