Значение раскрывающегося списка кендо не передается правильно на серверный код - PullRequest
0 голосов
/ 26 февраля 2019

В моем приложении angular 7 реализованы элементы управления выпадающим списком kendo.Я привязываю раскрывающийся список к объекту, который правильно связывает данные и отображает их на экране.

Когда я изменяю раскрывающийся список на другое значение и пытаюсь сохранить его, я вижу, что свойство в модели содержит идентификаторизмененного значения, но не сам объект.Еще одна вещь, касающаяся того, что в коде .net на стороне сервера он не имеет последнего измененного значения.

Я думаю, причина может заключаться в том, что в методе get свойства фильтрация выполняется этим. Entity.PRIMARY_CLASS_ID.Здесь Entity относится к публичному FUND Entity {get;задавать;} в модели представления.На стороне клиента раскрывающийся список привязан к FundDetails.PrimaryClasses, и, следовательно, значение ntity.PRIMARY_CLASS_ID остается неизменным.Так что мне нужно реализовать свойство valuechange для изменения этого значения.

Может кто-нибудь сказать мне, если что-то упустил.

UI

 <label for="inputEmail" class="col-md-2 col-form-label header">Primary Class</label>
                <div class="col-md-3">
                    <div *ngIf="!EditMode">{{FundDetails.PrimaryClasses.DESCRIPTION}}</div>
                    <kendo-dropdownlist  *ngIf="EditMode" style="width:350px" [(ngModel)]="FundDetails.PrimaryClasses" [data]="FundDetails.Classes" [filterable]="false" textField="DESCRIPTION" [valuePrimitive]="true"
                    valueField="ID"></kendo-dropdownlist>
                </div>

Компонент

saveManager() {
        this.fundService.createFund(this.FundDetails)
            .subscribe(data => {
                this.getFundDetails(this.SelectedFundId);
                this.EditMode = !this.EditMode;
            },
                err => {
                    this.Error = 'An error has occurred. Please contact BSG';
                },
                () => {
                });
    }

ViewModel

public class NewFundViewModel
    {

        public NewFundViewModel()
        {
            Products = new List<Product>();
        }

        public FUND Entity { get; set; }
        public List<FUND> Entities { get; set; }

        public List<VEHICLE_TYPE> VehicleTypes { get; set; }
        public List<DOMICILE> Domiciles { get; set; }
        public List<CLOSURE_STATUS> ClosureStatuses { get; set; }
        public List<INVESTMENT_STATUS> InvestmentStatuses { get; set; }
        public List<ACCOUNT_MANDATE> AccountMandates { get; set; }
        public ICollection<FUND> FlagshipFunds { get; set; }
        public FUND_CLASS PrimaryClass;
        public List<FUND_CLASS> Classes { get; set; }
        public List<Product> Products { get; set; }
        public List<int> BloombergRequiredIds { get; set; }
        private FUND_CLASS _primaryClass;
        private VEHICLE_TYPE _vehicleType;
        private DOMICILE _domicile;
        private CLOSURE_STATUS _closureStatus;
        private INVESTMENT_STATUS _investmentStatus;
        private FUND _flagshipFund;
        private ACCOUNT_MANDATE _accountMandate;

        public string SelectedHfrProduct
        {
            get
            {
                return Entity.HFR_ID.HasValue() && Products.Any(x => x.ShortName == Entity.HFR_ID)
                    ? Products.First(x => x.ShortName == Entity.HFR_ID).Name
                    : null;
            }
        }

        public FUND FlagShipFund
        {
            get
            {
                if (this.Entity.FLAGSHIP_FUND_ID == null) return null;
                 _flagshipFund = this.FlagshipFunds?.FirstOrDefault(x => x.ID == this.Entity.FLAGSHIP_FUND_ID);
                    return _flagshipFund;

            }
            set
            {
                _flagshipFund = value;
            }
        }

        public INVESTMENT_STATUS InvestmentStatus
        {
            get
            {
                if (this.Entity.INVESTMENT_STATUS_ID == null) return null;
                _investmentStatus = this.InvestmentStatuses?.FirstOrDefault(x => x.ID == this.Entity.INVESTMENT_STATUS_ID);
                return _investmentStatus;
            }
            set
            {
                _investmentStatus = value;
            }
        }

        public CLOSURE_STATUS ClosureStatus
        {
            get
            {
                if (this.Entity.CLOSURE_STATUS_ID == null) return null;
                 _closureStatus = this.ClosureStatuses?.FirstOrDefault(x => x.ID == this.Entity.CLOSURE_STATUS_ID);
                return _closureStatus;
            }
            set
            {
                _closureStatus = value;
            }
        }

        public DOMICILE Domicile
        {
            get
            {
                if (this.Entity.DOMICILE_ID == null) return null;
                _domicile = this.Domiciles?.FirstOrDefault(x => x.ID == this.Entity.DOMICILE_ID);
                return _domicile;
            }
            set
            {
               _domicile = value;
            }
        }



        public FUND_CLASS PrimaryClasses
        {
            get
            {
                if (this.Entity.PRIMARY_CLASS_ID == null) return null;
                _primaryClass = this.Classes?.FirstOrDefault(x => x.ID == this.Entity.PRIMARY_CLASS_ID);
                return _primaryClass;
            }
            set
            {
                _primaryClass = value;
            }
        }

        public VEHICLE_TYPE VehicleType
        {
            get
            {
                if (this.Entity.VEHICLE_TYPE_ID == null) return null;
                _vehicleType = this.VehicleTypes?.FirstOrDefault(x => x.ID == this.Entity.VEHICLE_TYPE_ID);
                return _vehicleType;
            }
            set
            {
                _vehicleType = value;
            }
        }

        public ACCOUNT_MANDATE AccountMandate
        {
            get
            {
                if (this.Entity.ACCOUNT_MANDATE_ID == null) return null;
                 _accountMandate = this.AccountMandates?.FirstOrDefault(x => x.ID == this.Entity.ACCOUNT_MANDATE_ID);
                return _accountMandate;
            }
            set
            {
                _accountMandate = value;
            }
        }

        public string HFRFundName { get; set; }


    }

метод сохранения

 [HttpPut]
        [SkipTokenAuthorization]
        public void CreateFund(NewFundViewModel model)
        {

            var fundService = GetService<FUND>();

            var fund = fundService.GetWithIncludes(model.Entity.ID);

            if (fund != null)
            {
                fund.NAME = model.Entity.NAME;
                fund.IS_ANONYMOUS = model.Entity.IS_ANONYMOUS;
                fund.PRIMARY_CLASS_ID = model.PrimaryClasses.ID;
                fund.VEHICLE_TYPE_ID = model.VehicleType.ID;
                fund.FLAGSHIP_FUND_ID = model.FlagShipFund?.ID;
                fund.INVESTMENT_STATUS_ID = model.InvestmentStatus.ID;
                fund.CLOSURE_STATUS_ID = model.ClosureStatus.ID;
                fund.DOMICILE_ID = model.Domicile.ID;
                fund.ACCOUNT_MANDATE_ID = model.AccountMandate?.ID;
                fundService.Update(fund);
            }
            else
            {


            }

        }
...