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() %>";

ビューバッグの値を上記の「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 に答える