web-dev-qa-db-ja.com

ASP.Net MVC 3 Razor Concatenate String

ASP.Net MVC 3 RazorViewに次のものがあります

@foreach (var item in Model.FormNotes) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.User.firstName)
    </td>
</tr>
}

これは問題なく機能しますが、文字列を連結してfirstNameとlastNameの両方を表示したいのですが、これを実行しようとすると

<td>
  @Html.DisplayFor(modelItem => item.User.firstName + @item.User.lastName)
</td>

次のエラーが発生します

テンプレートは、フィールドアクセス、プロパティアクセス、単一次元配列インデックス、または単一パラメーターのカスタムインデクサー式でのみ使用できます

Razor Viewで文字列を連結する方法を知っている人はいますか?

皆さんありがとう。

[〜#〜]編集[〜#〜]

私のRazorViewは、次のようなViewModelを受け入れます

public class ViewModelFormNoteList
{
    public IList<Note> FormNotes { get; set; }
}

Royが提案したように、ここにFullNameプロパティを配置したいのですが、どのように機能させるのかわかりません。

12
tcode

DisplayForはマップするプロパティを必要とするため、連結は不可能です。モデルに読み取り専用プロパティFullNameを公開すると、連結が返されます。

public string FullName
{
   get
   {
      return User.FirstName + " " + User.LastName;
   }
}

次に、それをDisplayForで使用します。

@Html.DisplayFor(modelItem => modelItem.FullName);
18
Roy Dictus
 @Html.DisplayFor(modelItem => item.FirstName) @Html.DisplayFor(modelItem => item.LastName)
5
user2243661

あなたはこれを行うことができます:

@foreach (var item in Model.FormNotes) { 
var conc = item.User.FirstName + item.User.LastName;
<tr> 
   <td> 
        @Html.Display(conc) 
    </td> 
</tr> 
}

または、モデルにプロパティFullNameを含める方が良い解決策になります

2
karaxuna