Передача словаря в представление Asp.net MVC - PullRequest
2 голосов
/ 22 июля 2010

Я извлекаю данные из MongoDB в C # Asp.net MVC2. Вот код, который я использую в контроллере.

var mongo = new Mongo();
mongo.Connect();

var db = mongo.GetDatabase("DDL");
var Provinces = db.GetCollection("Provinces");
var documents = Provinces.FindAll().Documents;
ViewData["Document"] = documents;

return View();

Теперь я не уверен, как считывать данные в представлении. Словарь документов должен иметь несколько пар значений, например:

Name: someName,
Lat: 39.1,
Lon: 77,
note: test not

Когда я добавляю его в виде, вот так:

<p><%: ViewData["Document"]%></p>

Я получаю вывод:

MongoDB.Driver.Cursor+<>c__Iterator0

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

2 голосов
/ 22 июля 2010

Для начала не используйте ViewData. Всегда используйте строго типизированные представления.

var mongo = new Mongo();
mongo.Connect();
var db = mongo.GetDatabase("DDL");
var Provinces = db.GetCollection("Provinces");
var documents = Provinces.FindAll().Documents;
return View(documents.ToArray());

Затем строго наберите представление и переберите модель:

<% foreach (var item in Model) { %>
    <div><%: item %></div>
<% } %>

Если вам повезет, вы даже можете получить IntelliSense в представлении, которое предложит вам свойства модели.

1 голос
/ 22 июля 2010

ViewData - контейнер объектов.Вы должны привести его к исходному типу, прежде чем сможете его использовать.Примерно так (при условии, что ваш словарь - Dictionary<string,string>:

<p>
    Name: <%: ((Dictionary<string, string>)ViewData["Document"])["Name"] %>
    ...
</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...