C#属性绑定顺序

时间:2018-03-22 14:08:33

标签: c# asp.net-mvc deserialization model-binding web.api

我正在使用c#Web API,我有一个如下所示的类,它具有以下定义的属性。我的Get / Post用户信息调用中使用了同一个类。基本上,当我们将值存储在数据库中时,我们以UTC格式的形式存储datetime字段,当我们从数据库中检索它时,我们将以用户特定时区的形式表示值。

    public class UserInfo
    {
        private string _userHashId;

        public string UserHashId
        {
          get
          {
            return _userHashId;
          }
          set
          {
            // This property has been set after set the value of "RegistrationDate"
            _userHashId = value;
          }
        }

        public string TimeZone { get; set; }

        public string _registrationDate;

        public string RegistrationDate
        {
          get
          {
            return _registrationDate;
          }
          set
          {
            _registrationDate = value;

            if (string.IsNullOrWhiteSpace(TimeZone))
            {
              // When this property's set method called "UserHashId" value is not available
              // and because of that TimeZone data is not available
              TimeZone = Helper.FindTimeZoneByUserHashId(UserHashId);
            }

            // User Timezone to UTC Timezone
            _registrationDateUTC = _registrationDate.ToUtcTimeZone(TimeZone);
          }
        }

        public DateTime _registrationDateUTC;

        public DateTime RegistrationDateUTC
        {
          get
          {
            return _registrationDateUTC;
          }
          set
          {
            _registrationDateUTC = value;

            // UTC Timezone to User Timezone
            _registrationDate = _registrationDateUTC.ToUserTimezone(TimeZone);
          }
        }
    }

在Get API调用中,使用正确的时区信息正确显示用户信息。但是,当用户使Post请求日期时间对话不能按预期工作时,因为我必须在将实际时间转换为UTC时间之前找出基于UserHashId的时区信息,并且我没有在“RegistrationDate”的set block中获得“UserHashId”值因为它还没有确定。

0 个答案:

没有答案