当值来自ViewBag时,为什么字符串上的switch语句会失败?

Dar*_*ter 6 dynamic razor asp.net-mvc-3

我在CSHTML razor页面中有以下代码:

@{
    var sort = ViewBag.Sort.ToString();
    switch (sort)
    {
        case "None": Html.Action("SortNone"); break;
        case "Name": Html.Action("SortName"); break;
        case "Date": Html.Action("SortDate"); break;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这与编译器错误消息失败:

CS0151: A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type
Run Code Online (Sandbox Code Playgroud)

但排序是一个字符串!将此重写为一系列if/else语句,但不是那么优雅.

Roh*_*est 9

尝试转换,编译器不知道ToString()的返回类型,因为它是动态的.

var sort = (string)ViewBag.Sort.ToString();
Run Code Online (Sandbox Code Playgroud)