2010-07-22 128 views
2

我從C#Asp.net MVC2中的MongoDB中提取數據。這是我在控制器中使用的代碼。將字典傳遞給視圖Asp.net MVC

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 

有人能指出我在正確的方向?

回答

1

ViewData是對象的容器。在使用它之前,您需要將其重新轉換爲其本機類型。像這樣的東西(假設你的詞典是一個Dictionary<string,string>:。

<p> 
    Name: <%: ((Dictionary<string, string>)ViewData["Document"])["Name"] %> 
    ... 
</p> 
+0

當我使用上面的代碼時,出現此錯誤:「InvalidCastException未被用戶代碼處理。無法強制類型爲'System.Collections.Generic.Dictionary'2 [System.Int32,System.String]'的對象類型爲'System.Collections.Generic.Dictionary'2 [System.String,System.String]'。我也剛剛創建了一個通用字典,並試圖將其傳遞給視圖。這給了我同樣的錯誤。在我能使用這個陳述之前,在視圖中是否還有其他需要完成的事情? – rross 2010-07-25 14:43:35

2

要開始不使用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> 
<% } %> 

如果你是幸運的,你甚至可以在將爲您提供模型的性能視圖得到智能

+0

當我嘗試使用documents.ToArray()時出現此錯誤:Systems.Collections.Generic.IEnumerable 不包含'ToArray'等的定義.... – rross 2010-07-25 14:57:33

相關問題