0

这是我的控制器中的代码:

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

4

3 回答 3

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;
}
于 2013-02-26T08:57:54.467 回答
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
于 2013-02-26T09:22:07.593 回答
0

您缺少 js 字符串周围的引号。所以服务器传递的值a3在客户端是未定义的。

var sort = '<%=(string)ViewBag.Widget.ToString() %>';
于 2013-02-26T09:01:10.713 回答