以下是我的控制器中的代码:
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未定义的错误。如何解决这个问题?我
答案 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() %>';