2017-02-14 29 views
-1

我在视图模型定义,像这样的属性 -如何在这个特定的ASP.NET MVC场景中正确使用C#属性?

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属性以及解析FullName或使FullName成为一种方法的First和Last方法,该方法在组合First和Last的剃刀视图中无法使用。在FullName的Setter中做你正在做的事情是不好的。 –

+1

“FullName”是否应该拥有'set;'属性? –

+0

在您的setter中,您尝试将'FirstName'和'LastName'属性设置为'FullName'的值,后者又调用返回'FirstName'和'LastName'值为'null'的getter,因为它们没有已设置。 –

回答

0

这取决于你想在这里做什么..

如果您希望能够以“集”的FullName财产,只是分割字符串成块,并指定这些值FirstNameLastName,你会做这样的(并且本身不使用属性的名称):

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

在你的代码的问题是,你要使用FullName二传手作为构造,当现实中的第一和LastName属性应该单独设置并且应该是FullName ld只是有一个get;财产,就像你有(在我看来)。

+0

下面的行在设置之前使用FullName。 'FirstName = FullName.Split(null)[0];'' '姓氏= FullName.Split(null)[1];' – Sarang

+0

我不确定这是什么意思 –

相关问题