2012-12-19 56 views
3

如何獲取顯示名稱/名稱屬性以顯示在我的WCF服務上?WCF顯示來自DataMember的DisplayAttribute或DisplayName

這是WCF服務中的對象。

[DataContract] 
public class Person 
{ 
    [DataMember] 
    public int PersonId { get; set; } 
    [DataMember] 
    [Display(Name = "Name")] 
    public string Name { get; set; } 
    [DataMember] 
    [DisplayName("Date of Birth")] 
    public DateTime? DateOfBirth { get; set; } 
    [DataMember] 
    public string Gender { get; set; } 
    [DataMember] 
    public string Telephone { get; set; } 
    [DataMember] 
    public string Email { get; set; } 
} 

我想在我基於WCF服務創建的表單上顯示描述性名稱。我怎樣才能做到這一點?在MVC4查看

<div id="online"> 

     @Html.EditorFor(m => m.Name) 

     @Html.EditorFor(m => m.Telephone) 
     @Html.EditorFor(m => m.Fax) 
     @Html.EditorFor(m => m.Email) 

</div> 
+0

你的UI代碼是什麼樣的? DataContracts只能處理序列化,而不能顯示邏輯... – Chris

+0

已添加爲更新@Chris –

回答

4

顯示代碼我想要的描述性名稱,以顯示我已經基於WCF服務創建的窗體上。我怎樣才能做到這一點?

你不行。

這些屬性由序列化程序讀取,但它們是在服務程序集中定義的。發送到客戶端的內容取決於所使用的綁定,但在例如SOAP消息(* HttpBinding)中,您將需要[DataMember(Name = "Foo")]屬性,因爲這將導致序列化程序更改XML中元素的名稱。

您必須將適當的屬性應用於客戶端代理中的類。

另一種方法是在生成參考時勾選Reuse Types;那麼你的客戶端將使用服務使用的相同程序集中的類,因此這些屬性將在客戶端可訪問。

+0

感謝您的回覆。你的意思是改變我的項目中包含視圖的參考文件嗎?如果是這樣,當我更新服務參考時,不會丟失信息。 @CodeCaster –

+0

@DavidC是正確的。我用另一種解決方案更新了我的問題,看看是否有效。 – CodeCaster

+0

不幸的是,該選項已被選中。 –