2012-10-18 43 views
0

在.ascx.cs我有這樣的代碼,例如:不能在.ascx中使用「var」變量?

var xDoc = XDocument.Parse(xml); //or XDocument.Load(fileName) 
var list = xDoc.Descendants("ordinanza") 
       .Select(n => new 
       { 
        Numero = n.Element("numero").Value, 
        Titolo = n.Element("titolo").Value, 
       }) 
       .ToList(); 

好,現在我願意「的foreach」這個匿名在我的.ascx類型,但我不能使用保護/公爲list(因爲是var)。

那麼,我該怎麼做呢?

+0

你怎麼想「 'foreach'「它在ascx標記?你爲什麼不在隱藏代碼中這樣做? –

+0

由於該custQuery中的數據,我需要編寫HTML代碼。我討厭將HTML寫入字符串/字符串構建器...... – markzzz

+0

但是,正常的ASP.NET方式是使用像repeater這樣的webdatabound控件,並且不會生成html,而是將控件(即自定義UserControls)放在一個'ItemTemplate'中。 –

回答

3

您正在提取的數據是較大實體的精簡版本,您正在視圖中使用這些數據。這在MVC或MVP術語中將是視圖模型(用於在UI中顯示數據的一種數據傳輸對象)。

你可以做的是創建一個簡單的輕量級類(視圖模型)來保存這些數據:

public CustomerContactViewModel() 
{ 
    public string Name { get; set; } 

    public string Phone { get; set; } 
} 

,然後更新您的LINQ查詢:

IEnumerable<CustomerContactViewModel> custQuery = 
    from cust in customers 
    where cust.City == "Phoenix" 
    select new CustomerContactViewModel() { Name = cust.Name, Phone = cust.Phone }; 
+1

是的......但是使用「var」消失:) – markzzz

+0

這不是件好事嗎? :-)根據你指定的問題「我不能在方法之間傳遞匿名對象,並期望它們像強類型對象一樣」,我的解決方案是「傳遞強類型對象」。 –

+0

使用「var」很有用!另外,如果我可以使用Repeater(正如Tim Schmelter所建議的那樣)會不錯,是不是? – markzzz