我使用批量上传地址的方法,下面的代码是使用excel文件上传地址。
问问题
130 次
3 回答
0
我希望能够在 Kentico 中使用此上传新地址,同时也可以修改/更新地址及其信息。
在下面的代码中,现有地址工作正常,但我上传的新地址意味着不工作。
AddressInfo address = AddressInfoProvider.GetAddresses()
.WhereEquals("AddressCustomerID", customerID )
.FirstOrDefault();
if (address != null)
{
//address = new AddressInfo();
address.AddressName = string.Join(", ", addressNameFields);
address.AddressCustomerID = customerID;
address.AddressLine1 = userDto.AddressLine;
address.AddressLine2 = userDto.AddressLine2;
address.AddressZip = userDto.PostalCode;
address.AddressCity = userDto.City;
address.AddressCountryID = country.CountryID;
address.AddressStateID = state.StateID;
address.AddressPhone = userDto.PhoneNumber;
address.AddressPersonalName = userDto.ContactName ?? $"{userDto.FirstName} {userDto.LastName}";
address.SetValue("Email", userDto.Email);
address.SetValue("CompanyName", userDto.Company);
address.SetValue("Status", "1");
address.SetValue("AddressType", AddressType.Shipping.Code);
}
else
{
address.AddressName = string.Join(", ", addressNameFields);
address.AddressCustomerID = customerID;
address.AddressLine1 = userDto.AddressLine;
address.AddressLine2 = userDto.AddressLine2;
address.AddressZip = userDto.PostalCode;
address.AddressCity = userDto.City;
address.AddressCountryID = country.CountryID;
address.AddressStateID = state.StateID;
address.AddressPhone = userDto.PhoneNumber;
address.AddressPersonalName = userDto.ContactName ?? $"{userDto.FirstName} {userDto.LastName}";
address.SetValue("Email", userDto.Email);
address.SetValue("CompanyName", userDto.Company);
address.SetValue("Status", "1");
address.SetValue("AddressType", AddressType.Shipping.Code);
}
AddressInfoProvider.SetAddressInfo(address);
于 2019-07-29T14:14:26.647 回答
0
看起来您的问题可能是您不应该创建新对象。当您通过 查找地址时AddressCustomerID
,如果找到主键,AddressID
将填充 ,。因此,当SetAddressInfo()
调用该方法时,它已经知道它AddressID
有一个值,因此它将使用您在这些字段中填充的那些值执行更新。如果没有AddressID
,它将执行插入。
所以尝试这样的事情:
// see if address exists
AddressInfo address = AddressInfoProvider.GetAddresses() .WhereEquals("AddressCustomerID", customerID) .FirstOrDefault();
if (address == null)
{
// set the values
address = new AddressInfo();
address.AddressName = "Address1";
address.customerID = customerID;
address.AddressLine1 = userDto.AddressLine;
...
}
else
{
// assuming the address was found
address.AddressLine1 = userDto.AddressLine;
address.SetValue("Email", userDto.Email);
address.SetValue("CompanyName", userDto.Company);
...
}
AddressInfoProvider.SetAddressInfo(address);
address
在整个过程中继续使用相同的对象而不是创建新对象。
于 2019-07-26T12:51:40.397 回答
-1
您是否查看过电子商务 API,特别是客户 API 更新地址
于 2019-07-25T15:19:09.223 回答