2014-04-30 3 views
0

Je l'extrait de code de code suivant:ListView envoie modèle entier

@(Html.Kendo().ListView<ContactViewModel>() 
    .Name("PortalInfo_NonAddedJobContacts") 
    .TagName("div") 
    .BindTo(Model.NonAddedContacts) 
    .ClientTemplateId("nonAddedJobContactsTemplate") 
    .DataSource(ds => ds 
     .Model(model => 
     { 
      model.Id(x => x.Id); 
      model.Field(x => x.ContactType); 
      model.Field(x => x.DisplayName); 
     }) 
    ) 
    .HtmlAttributes(new { style = "border: none;" }) 
) 

Je pense que en disant le contrôle que je ne veux que l'Id, ContactType et DisplayName que Kendo serait assez intelligent pour n'envoyer à travers ces 3 champ lors de la génération du contrôle. Cependant, quand je regarde le violoniste, il utilise l'ensemble de ContactViewModel, qui est extrêmement gonflé avec beaucoup d'informations dont je n'ai pas besoin.

Comment puis-je obtenir Kendo pour créer SEULEMENT les 3 champs dont j'ai besoin?

Mur de texte Html qui Kendo créé:

jQuery(function(){jQuery("#PortalInfo_NonAddedJobContacts").kendoListView({"dataSource":{"type":"aspnetmvc-ajax","transport":{"read":{"url":""},"prefix":""},"serverPaging":true,"serverSorting":true,"serverFiltering":true,"serverGrouping":true,"serverAggregates":true,"filter":[],"schema":{"data":"Data","total":"Total","errors":"Errors","model":{"id":"Id","fields":{"ContactType":{"type":"string"},"ActivityStatus":{"type":"string"},"StatusDisplay":{"type":"string"},"Addresses":{"type":"object"},"Phones":{"type":"object"},"Emails":{"type":"object"},"Deleted":{"type":"boolean"},"InsuranceCompanyContactId":{"type":"number","defaultValue":null},"ParentContactTypeId":{"type":"number","defaultValue":null},"MappedContactId":{"type":"number","defaultValue":null},"MarketingRep":{"type":"string"},"InsuranceCompanyName":{"type":"string"},"PrimaryPhone":{"editable":false,"type":"string"},"PrimaryPhoneNumbersOnly":{"editable":false,"type":"string"},"HomePhone":{"editable":false,"type":"string"},"HomePhoneNumbersOnly":{"editable":false,"type":"string"},"OfficePhone":{"editable":false,"type":"string"},"OfficePhoneNumbersOnly":{"editable":false,"type":"string"},"CellPhone":{"editable":false,"type":"string"},"CellPhoneNumbersOnly":{"editable":false,"type":"string"},"OtherPhone":{"editable":false,"type":"string"},"Fax":{"editable":false,"type":"string"},"FaxNumbersOnly":{"editable":false,"type":"string"},"PrimaryEmail":{"type":"string"},"PrimaryStreet1":{"type":"string"},"PrimaryStreet2":{"type":"string"},"PrimaryCity":{"type":"string"},"PrimaryState":{"type":"string"},"PrimaryPostal":{"type":"string"},"PrimaryAddressFormatted":{"type":"string"},"GoogleMapHtml":{"type":"string"},"Tags":{"type":"object"},"LastActivityDate":{"type":"date","defaultValue":null},"IsEditable":{"type":"boolean"},"Id":{"type":"number"},"CompanyId":{"type":"number","defaultValue":null},"CompanyPerson":{"type":"string"},"ContactTypeId":{"type":"number"},"ContactTypeName":{"type":"string"},"TypePath":{"type":"string"},"FirstName":{"type":"string"},"LastName":{"type":"string"},"CompanyName":{"type":"string"},"DisplayName":{"type":"string"},"AddressID":{"type":"number","defaultValue":null},"Street1":{"type":"string"},"Street2":{"type":"string"},"City":{"type":"string"},"State":{"type":"string"},"PostalCode":{"type":"string"},"Chalkboard":{"type":"string"},"Title":{"type":"string"},"InsuranceCompanyId":{"type":"number","defaultValue":null},"MarketingRepId":{"type":"number","defaultValue":null},"Website":{"type":"string"},"Inactive":{"type":"boolean"},"FullName":{"editable":false,"type":"string"},"Buckets":{"type":"object"},"Activities":{"type":"object"},"Rois":{"type":"object"},"FormattedDateUpdated":{"type":"string"},"TotalLeads":{"type":"number"},"TotalReturn":{"type":"number"},"TotalInvested":{"type":"number"},"ROI":{"editable":false,"type":"number"},"ROIPercentage":{"editable":false,"type":"number"}}}},"data":{"Data":[{"ContactType":"Property Management Company","ActivityStatus":null,"StatusDisplay":null,"Addresses":[{"Id":1975,"AddressTypeId":2,"AddressType":"Business","Street1":"2122 W. Lone Cactus Dr., Suite 5 ","Street2":null,"City":"Phoenix","State":"AZ","PostalCode":"85027","FormattedAddress":"2122 W. Lone Cactus Dr., Suite 5 Phoenix, AZ 85027"}],"Phones":[{"Id":1329,"PhoneTypeId":4,"PhoneType":"Work","PhoneTypeDisplay":"W:","Number":"602-862-9307","NumberOnly":"6028629307"}],"Emails":[],"Deleted":false,"InsuranceCompanyContactId":null,"ParentContactTypeId":null,"MappedContactId":null,"MarketingRep":"","InsuranceCompanyName":"","PrimaryPhone":"602-862-9307","PrimaryPhoneNumbersOnly":"6028629307","HomePhone":"","HomePhoneNumbersOnly":"","OfficePhone":"602-862-9307","OfficePhoneNumbersOnly":"6028629307","CellPhone":"","CellPhoneNumbersOnly":"","OtherPhone":"","Fax":"","FaxNumbersOnly":"","PrimaryEmail":"","PrimaryStreet1":"2122 W. Lone Cactus Dr., Suite 5 ","PrimaryStreet2":null,"PrimaryCity":"Phoenix","PrimaryState":"AZ","PrimaryPostal":"85027","PrimaryAddressFormatted":"2122 W. Lone Cactus Dr., Suite 5 Phoenix, AZ 85027","GoogleMapHtml":"2122+W.+Lone+Cactus+Dr,+Suite+5+,+Phoenix,+AZ,+85027","Tags":null,"LastActivityDate":null,"IsEditable":true,"Id":2052,"CompanyId":null,"CompanyPerson":"Company","ContactTypeId":32,"ContactTypeName":null,"TypePath":null,"FirstName":null,"LastName":null,"CompanyName":"AMPM Water Damage Restoration","DisplayName":"AMPM Water Damage 
+0

Pourriez-vous nous expliquer pourquoi c'est un problème? –

+0

Parce que si j'ai 100 clients et que chaque client a 100k de données, c'est 10Mo de données qui seraient envoyées sur Internet. Sur une connexion lente et mobile, cela peut prendre trop de temps. Je préfère envoyer 3 champs pour 100 clients à la place. – Scottie

Répondre

2

Kendo va créer le contrôle ListView basé sur ce que le modèle est que vous passez à elle.

Si vous souhaitez que l'ensemble de données soit plus compact, vous devez fournir et associer un ViewModel plus spécialisé.

Créer une classe dans le sens de:

public class ContactListViewModel 
{ 
    public int Id { get; set; } 
    public string ContactType { get; set; } 
    public string DisplayName { get; set; } 
} 

ont ensuite votre méthode de commande retourne une collection de ContactListViewModel et lier votre ListView à cela.

Questions connexes