Ответ 1
Метод контроллера Json() возвращает JsonResult, который не совпадает с строкой JSON. JsonResult хранит данные, но данные фактически записываются непосредственно в ответ, когда движок View Engine вызывает JsonResult.ExecuteResult(). То, что все, вероятно, больше информации, чем вы хотите, - дело в том, что вызов Json() в контроллере не даст вам строки JSON.
Если вы просто хотите превратить свои данные в строку JSON, вы можете использовать JavaScriptSerializer, что и использует метод Json():
JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewData["JsonRegionList"] = serializer.Serialize(jsonRegionList);