2011-04-26 70 views
3

我試圖建立一個JavaScript的C#逼近對象文本傳遞給視圖模型在asp.net MVC:問題在C#中使用匿名類型創建對象字面

var obj = new dynamic[]{ 
    new { name: "Id", index: "Id", width: 40, align: "left" }, 
    new { name: "Votes", index: "Votes", width: 40, align: "left" }, 
    new { name: "Title", index: "Title", width: 200, align: "left"} 
}; 

編譯器扔:

"An anonymous type cannot have multiple properties with the same name" 

刺在黑暗中我猜它不能在哪個屬性區分與哪個匿名對象,我已經使用LINQ看到了類似的錯誤。

有沒有更好的方法來完成我想要做的事情?

編輯:這是在VisualStudio 2010和.net框架4. Bala R's Answer似乎解決了以前的版本,雖然。

+0

這是你真正的代碼是導致錯誤? – Priyank 2011-04-26 19:48:47

+0

你是否在屬性值之間使用':'語法而不是'symbol = value'? – Tejs 2011-04-26 19:56:24

+0

@priyank是的,但除了上下文外,我應該發佈其餘的? @tejs是的我試圖鏡像JavaScript對象文字的語法 – 2011-04-26 20:21:25

回答

6

你可以試試嗎?

var obj = new[]{ 
    new { name= "Id", index= "Id", width= 40, align= "left" }, 
    new { name= "Votes", index= "Votes", width= 40, align= "left" }, 
    new { name= "Title", index= "Title", width= 200, align= "left"} 
}; 

,你應該能夠訪問匿名類數組這樣

if (obj[0].align == "left") 
{ 
    ... 
} 
+0

儘管似乎仍然拋出同樣的錯誤,好想法。 – 2011-04-26 19:18:03

+0

我沒有任何編譯錯誤。注意:我刪除了'dynamic',因爲我認爲這不是必需的+我沒有vs2010和.net 4 :) – 2011-04-26 19:19:01

+0

嗯,是的,在這裏運行VS2010和.net 4,我將它添加到原始問題中的信息。 – 2011-04-26 19:27:44