2012-08-03 27 views
1

我在想,如果我有這樣一個模型類:數組類型屬性的MVC模型DisplayFormat?

public class Contact 
{ 
    public string Name { get; set; } 
    public string[] Emails { get; set; } 
} 

在我看來,我用DisplayFor,所以它並顯示所有郵件,但只是作爲一個字符串。

@Html.DisplayFor(modelItem => item.Emails) 

約翰@ gmail.comjohn @ hotmail.comjohn @ microsoft.com

是否有某種DisplayFormat屬性的,我可以適用於電子郵件財產, 以便它會顯示所有電子郵件單個聯繫,用逗號分隔,就像這樣:

[email protected][email protected][email protected]

真的不希望使用的foreach(VAR電子郵件的型號.Email)在我看來這個簡單的操作。

謝謝。

+0

嘗試加入適當的編程語言的標籤。在PHP中,我會使用像implode(電子郵件,','),我覺得這種語言有類似的功能 – Pevara 2012-08-03 18:41:01

+0

你可以創建一個編輯器模板。檢查了這一點:http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/ – 2012-08-03 18:48:58

+0

謝謝安德烈,我也會編輯太:) – monstro 2012-08-03 23:49:10

回答

2

如何添加另一個字符串屬性視圖模型來表示字符串數組的一個逗號分隔的版本,並使用該視圖

public class Contact 
{ 
    public string Name { get; set; } 
    public string[] Emails { get; set; } 
    public string EmailsCommaSeperated 
    { 
     get 
     { 
     return String.Join(",",Emails); 
     } 
    } 
} 

,並用它作爲

@Html.DisplayFor(modelItem => item.EmailsCommaSeperated) 
+0

不會'@Html。 DisplayFor(modelItem => String.Join(「,」,item.Emails))'工作? – 2012-08-03 18:50:58

+1

@AndreCalil:同樣的事情。我想保留它到POCO(ViewModel),以便視圖看起來乾淨可讀**沒有太多的函數調用。 – Shyju 2012-08-03 18:51:56

+0

我明白了。由於這個類是一個*模型*,而不是一個簡單的*視圖模型*,所以我不想添加視圖邏輯。但是,這是一個小決定。 +1爲直接暗示 – 2012-08-03 18:53:33