2015-02-02 2 views
0

Как использовать пары KeyValue (хранимые в ViewBag/ViewData) в javascript. Мне нужна структура пары KeyValue, чтобы использовать словарь с контроллера.Как использовать структуру пары KeyValue в поле зрения

ViewBag.ContactTypes = new Dictionary<string,string> 
       { 
        {"Home", "5"}, 
        {"Cell", "6"}, 
        {"Work", "7"}, 
        {"Fax", "8"}, 
        {"Other", "9"}, 
       }; 

& Я хочу, чтобы получить доступ к этим словарные значения по ключу, как:

ViewBag.ContactTypes["Home"] 

Как достичь этой цели, любая идея?

ответ

1

Это просто идея, я удалю ее, если она не полезна.

Внутри контроллера, я хотел бы использовать JsonSerializer (выбрать свой любимый), и я бы сохранить объект JSON в viewBad:

ViewBag.ContactTypes = YourJsonConverter.serialize(new Dictionnary<string, string>{[...]}); 

И затем, использовать его в качестве строки внутри вид:

<script type="text/javascript"> 
    var myJson = @Viewbag.ContactTypes 
</script> 
+0

Это не будет хорошей возможностью получить его в javascript, вы можете просто использовать его в представлениях, переведя его в словарь type. –

+0

ooops, его мой плохой, я не читал вопрос правильно, Извините @ DeblatonJean-Philippe –

+0

Обновил мой ответ –

0

Попробуйте этот код на ваш взгляд

Сначала оберните словарь код для JSON:

ViewBag.ContactTypes = Json(new Dictionary<string,string> 
       { 
        {"Home", "5"}, 
        {"Cell", "6"}, 
        {"Work", "7"}, 
        {"Fax", "8"}, 
        {"Other", "9"}, 
       }); 

используйте javascript в вашем файле cshtml.

<script type="text/javascript" > 
       var data = JSON.stringify(@Html.Raw(Json.Encode(ViewBag.ContactTypes))); 
       data = JSON.parse(data); 
       alert(data.Data.Home); 
</script> 

Проверить это fiddle

Рабочей Fiddle Изображение enter image description here

Предложение

Если эти значения фиксированы, то вместо извлечения с сервера, я хотел бы предложить использовать перечисления в файле javascript. Вместо них { "Home", "5"}, { "Cell", "6"}, { "Работа", "7"}, { "Факс", "8"}, {» Другой», "9"},

Создать Enum в где ваш common.js файл

var myApp = myApp || {}; 
myApp.Enums = function() { 
    ContactTypes = { 
     Home: 5, 
     Cell: 6, 
     Work: 7, 
     Fax: 8, 
     Other: 9, 
    }; 
    Status = { 
     CREATED: "CREATED", 
     INPROGRESS: "In Progress", 
     Completed: { value: 3, name: "Completed", text: "Status Completed" } 
    }; 
    return { Status: Status, ContactTypes: ContactTypes} 
}(); 

ИСПОЛЬЗОВАНИЕ

alert(myApp.Enums.ContactTypes.Home); 

для улучшения интеллекта, просто перетащите common.j s в вашем JS-файле транзакции.

+0

Страница скрипта недоступна.Я получаю ошибку здесь: var data = JSON.stringify (@ Html.Raw (Json.Encode (ViewBag.ContactTypes))); как Сочетание Javascript и серверный код. –

+0

Какая ошибка вы получаете? попробуйте установить точку останова и убедитесь, что вы получаете правильное значение. –

Смежные вопросы