6
我有一個CSHTML剃刀頁面下面的代碼:當值來自ViewBag時,爲什麼字符串上的switch語句失敗?
@{
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
但排序是一個字符串!將其重寫爲一系列if/else語句,但不夠高雅。
好的,這使得我所知道的一切都沒有意義......但它的工作原理!我會進入一個哲學討論,爲什麼ToString()不只是返回一個字符串,但我可能不需要知道... –
因爲它是動態的,方法將在運行時綁定,不存在任何停止ToString的新實現的東西都會返回字符串以外的內容。你可以使用這個((對象)ViewBag.Sort).ToString() –
當然!感謝您的解釋和快速回復。 –