7

我在 CSHTML 剃须刀页面中有以下代码:

@{
    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;
    }
}

但是,这会失败并显示编译器错误消息:

CS0151: A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type

但是 sort 是一个字符串!将其重写为一系列 if/else 语句是可行的,但并不那么优雅。

4

1 回答 1

10

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

var sort = (string)ViewBag.Sort.ToString();
于 2012-06-18T23:36:55.150 回答