Я бы использовал сеанс (HttpContext.Current.Session) для хранения такой переменной, как эта, вместо viewbag. Таким образом, вы не присоединяете массив к ссылке, а только сессионный ключ.
В коде:
string mylistkey = ?;//choose a meaningful and unique key name
HttpContext.Current.Session.add(mylistkey, list); //your list in your example
ViewBag.myProperty = mylistkey; // just put the key in the viewbag
В коде страницы:
@Html.ActionLink("action", ..., new { idSessionKey = @ViewBag.myProperty } )
На целевой странице вы используете ключ для получения фактического массива из сеанса:
string sessionKey = HttpContext.Current.Request.QueryString[idSessionKey];
List<MyClass> mylist=(List<MyClass>)(
HttpContext.Current.Session[sessionKey]);
HttpContext.Current.Session.Remove(sessionKey);
Есть много других способов сделать это, и я думаю, что вы также можете заставить свою идею JSON работать. Это было бы моим предложением, потому что оно делает вашу строку URL более читабельной.