Как Вытолкнуть Значение Json Из React.JS В Абстрактный Класс .NET?

#c# #reactjs #.net #asp.net-web-api #abstract-class

Вопрос:

Я понятия не имею, как вытолкнуть значение json из react.js в абстрактный класс .NET. В принципе, вот мой абстрактный класс

 using System.Runtime.Serialization;

[DataContract]
[KnownType(typeof(ConcreteOtherRegistry))]
[KnownType(typeof(ConcreteForeignerRetailRegistry))]
[KnownType(typeof(ConcreteUndetailedRegistry))]
[KnownType(typeof(ConcreteRetailRegistry))]
[KnownType(typeof(ConcretePublicRegistry))]
[KnownType(typeof(ConcreteCorporateRegistry))]

public abstract class ConcreteRegistryInfo
{
protected ConcreteRegistryInfo();

[DataMember(IsRequired = true)]
public long Oid { get; set; }
[DataMember(IsRequired = true)]
public short Status { get; set; }
[DataMember(IsRequired = true)]
public long LastUpdated { get; set; }
[DataMember(IsRequired = true)]
public long OperationRefNo { get; set; }
[DataMember(IsRequired = true)]
public string Address { get; set; }

public override string ToString();
}
 

а вот и мой веб-сервис

 public class SaveApplicationParameters
    {
        public ConcreteRegistryInfo registryInfo{ get; set; }
    }

[HttpPost]
    public object[] SaveApplication([FromBody] SaveApplicationParameters saveApplicationParameters)
    {
        ConcreteApplication application = saveApplicationParameters.application;

        try
        {
            Com.BS.WaterSupplyAndSeverage.Services.WaterSupplyAndSewerage wssService = new Com.BS.WaterSupplyAndSeverage.Services.WaterSupplyAndSewerage();
            wssService.SaveApplication(application);
            object[] result = new object[1];
            result[0] = application.ApplicationNo;
            return resu<
        }
        catch (Exception e)
        {
            FileLogger.Error(CLASS_NAME, "SaveApplication", e.Message, e.StackTrace, application, policy);
            BSCommunicationException commException = PrepareCommunicationException(e);
            throw new FaultException<BSCommunicationException>(commException, new FaultReason(commException.ExceptionMessage));
        }
    }
 

и вот мой пример кода, который нужно нажать

  const body = { registryInfo: APPLICATION };
 axios.post('https://localhost:44396/api/SaveApplication', body)
  .then(async response => {
    SuccessOperation({ RESPONS_DATA: await response.data });
  })
  .catch(() => {
    FailedOperation({ RESPONSE_DATA: null })
  });
 

вот мой JSONObject

 let APPLICATION = {
      IdentityNumber:IdentityNumber,
      Name:Name,
      SurName:SurName,
      FatherName:FatherName,
      MotherName:MotherName,
      PlaceOfBirth:PlaceOfBirth,
      Gender:Gender,
      Email:Email,
      DateOfBirth:DateOfBirth,
      DayOfBirth:DayOfBirth,
      MonthOfBirth:MonthOfBirth,
      YearOfBirth:YearOfBirth,
      GsmNumber:GsmNumber,
      PhoneNumber:PhoneNumber,
      Retired:Retired,
      Address:Address,
      Oid:Oid
    }
 

В этом примере я отправляю конкретную информацию о регистрации. Но все классы(известный тип…) являются производными от ConcreteRegistryInfo, поэтому сначала я должен передать параметры в ConcreteRegistryInfo. У тебя есть какие-нибудь идеи, как я могу это сделать?

Комментарии:

1. Почему ConcreteRegistryInfo нужно быть абстрактным? Вы предполагаете, что registryInfo свойство параметра, переданного вашей службе, может быть экземпляром любого из классов, производных от ConcreteRegistryInfo него ? И почему ваш объект JSON содержит только свойства Address и Oid из 5 Required свойств в этом классе? Я думаю, что у меня есть представление о том, что вы должны делать, но я хочу быть уверен, что сначала пойму намерение.

2. Другой вопрос, используете ли вы полный . net framework или .net core? Я предполагал, что полностью . сетевая структура , поскольку вопрос помечен, .net а не .net-core , но теперь мне интересно, правильно ли это предположение.

3. Здравствуйте @sbridewell Я работаю над большим проектом. Этот проект был создан .net framework и ext.net2.0 до того, как я взялся за этот проект. Сервисная сторона действительно так велика. и многие абстрактные классы использовались на стороне обслуживания. поэтому я не могу изменить этот метод. Я меняю клиентскую сторону с Ext. Сеть, чтобы отреагировать. JS , я должен выяснить, как передать значение JSON в абстрактный класс. Ответ на второй вопрос: это образец JSON розничных участников. Что означает, что абстрактный класс выводит для меня розничных членов. Не переусердствуйте с этим json. Если вы знаете какое — либо решение, просто поделитесь им со мной, пожалуйста. Заранее спасибо

4. Итак, вы не меняете код на стороне сервера, вы просто хотите переписать клиент в React.js, это полезно знать. С какой частью этого вы боретесь? Вы получаете сообщение об ошибке при попытке позвонить в службу? Если да, то это ошибка в браузере или в коде на стороне сервера? Пожалуйста, поделитесь подробностями ошибки в вашем вопросе. Если вы не получаете ошибку, то что происходит при вызове сервера и чем это отличается от того, что вы ожидаете?

5. Привет @sbridewell Да, я просто хочу переписать свою клиентскую часть в React. JS, я не получаю никаких ошибок, я отправляю и объект, который включает в себя concreteRegisterInfo и другие параметры. И когда я проверяю свои параметры на стороне обслуживания, которая исходит от react. Js , я вижу, что мой ConcreteRegisterInfo равен нулю, но другие значения в порядке.