В моем приложении 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
{
}
}