Метод Json
, который вы вызываете в своем контроллере, предназначен для возврата JsonResult
, он не создает строку JSON. Вы бы использовали этот метод для возврата json из вызова ajax.
Чтобы вернуть строку JSON в представление, используйте что-то вроде этого.
JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewBag.InitialData = serializer.Serialize(people);
Тогда, на ваш взгляд, код
<script>
var initialData = '@Html.Raw(ViewBag.InitialData)';
....
</script>
Чтобы ответить на ваш второй вопрос. Чтобы передать такие данные глобального списка, просто определите новый класс ContactsList
например,
public class ContactsList
{
public string Name { get;set; }
public string Owner { get;set; }
public IList<People> People { get;set; }
}
Заполните это и передайте это JavascriptSerializer
. Вам, очевидно, нужно будет соответственно настроить JS ContactsModel
.
EDIT
Вот jsfiddle, который демонстрирует необходимые изменения.
http://jsfiddle.net/madcapnmckay/jRjwU/
Надеюсь, это поможет.