2017-02-14 22 views
-1

Я свойство, определенный в моей модели представления, как так -Как правильно использовать свойства 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 Посмотреть есть это -

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

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

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

+1

Либо сделайте FullName свойство, и методы First и Last, которые обрабатывают FullName или сделают метод FullName, который вы не можете использовать в своем бритвенном представлении, которое объединяет First и Last. Выполнение того, что вы делаете в Setter of FullName, плохо. –

+1

Если 'FullName' даже имеет свойство' set; '? –

+0

В своем сеттере вы пытаетесь установить свойства 'FirstName' и' LastName' значение 'FullName', которое, в свою очередь, вызывает getter, которые возвращают значения' FirstName' и 'LastName', которые являются' null', потому что у них нет были установлены. –

ответ

0

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

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

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

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

+0

Ниже строки используют FullName перед установкой. 'FirstName = FullName.Split (null) [0];' 'LastName = FullName.Split (null) [1];' – Sarang

+0

Я не уверен, что это значит –