Как правильно использовать свойства 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;
собственность такая же как у вас (по моему мнению).