2010-03-28 12 views
1

Du côté du serveur J'ai la classe suivante:RIA: comment obtenir la fonctionnalité, pas une donnée

public class Customer 
{ 
    [Key] 
    public int Id { get; set; } 

    public string FirstName { get; set; } 

    public string SecondName { get; set; } 

    public string FullName { get { return string.Concat(FirstName, " ", SecondName); } } 
} 

Le problème est que chaque champ est calculé et transféré au client (à l'application Silvelight), par exemple « FullName » propriété:

[DataMember()] 
    [Editable(false)] 
    [ReadOnly(true)] 
    public string FullName 
    { 
     get 
     { 
      return this._fullName; 
     } 
     set 
     { 
      if ((this._fullName != value)) 
      { 
       this.ValidateProperty("FullName", value); 
       this.OnFullNameChanging(value); 
       this._fullName = value; 
       this.RaisePropertyChanged("FullName"); 
       this.OnFullNameChanged(); 
      } 
     } 
    } 

lieu de transfert de données (qui consomme de la circulation, dans certains cas, il introduit une surcharge significative). J'aimerais avoir un calcul du côté client (aplpication Silverlight). Est-ce possible sans duplication manuelle de la mise en œuvre de la propriété?

Merci.

+0

En supposant que ce soit pour un formulaire Web ou quelque chose, ne pouvez-vous faire la validation en utilisant AJAX ou JavaScript? –

+0

Je suis désolé, ... que puis-je faire avec la validation? Le but de la copie de fonctionnalité est de calculer et d'afficher FullName comme "Alex Sereda" du côté client au cas où nous aurions FirstName = "Alex" et SecondName = "Sereda" sans passer la valeur de la propriété FullName. – Budda

Répondre

0

Déplacez les propriétés calculées dans un fichier différent en tant que classe partielle et utilisez la convetion de nommage "Partagée" (MyFileName.Shared.cs). Exemple:

//Employee.cs 
public partial class Employee 
{ 
    [Key] 
    public string EmployeeId { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

//Employee.Shared.cs 
public partial class Employee 
{ 
    public string LastNameFirst 
    { 
     get { return string.Format("{0}, {1}", LastName, FirstName); } 
    } 
} 

Le code du fichier partagé s'affichera côté client.