Как правильно использовать свойства C# в этом конкретном сценарии ASP.NET MVC?

У меня есть свойства, определенные в моей модели представления, как так -

public string FullName
        {
            get { return FirstName + " " + LastName; }
            set {
                    FirstName = FullName.Split(null)[0];
                    LastName = FullName.Split(null)[1];
                }
        }


        public string FirstName { get; set; }


        public string LastName { get; set; }

Мой Razor View имеет это -

<label for="FullName">Name</label>
            @Html.TextBox("FullName", Model.FullName)  

Хотя я могу установить полное имя и отобразить его в текстовом поле при загрузке страницы, я НЕ могу получить значение при отправке формы.

Мне нужно получить значение из этого текстового поля тоже, когда значение изменяется. Что я здесь не так делаю?

1 ответ

Это зависит от того, что вы хотите сделать здесь..

Если вы хотите иметь возможность "установить" FullName свойство и просто разбить строку на куски и назначить эти значения FirstName а также LastName, вы бы сделали это так (и не использовали бы имя свойства само по себе):

        public string FullName
        {
            get { return FirstName + " " + LastName; }
            set
            {
                this.FirstName = value.Split(null)[0];
                this.LastName = value.Split(null)[1];
            }
        }

Проблема в вашем коде в том, что вы пытаетесь использовать FullName setter как конструктор, когда в действительности свойства First и LastName должны быть установлены индивидуально, а FullName должен просто иметь get; собственность такая же как у вас (по моему мнению).

Другие вопросы по тегам