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プロパティを配置したいのですが、どのように機能させるのかわかりません。
DisplayFor
はマップするプロパティを必要とするため、連結は不可能です。モデルに読み取り専用プロパティFullNameを公開すると、連結が返されます。
public string FullName
{
get
{
return User.FirstName + " " + User.LastName;
}
}
次に、それをDisplayFor
で使用します。
@Html.DisplayFor(modelItem => modelItem.FullName);
@Html.DisplayFor(modelItem => item.FirstName) @Html.DisplayFor(modelItem => item.LastName)
あなたはこれを行うことができます:
@foreach (var item in Model.FormNotes) {
var conc = item.User.FirstName + item.User.LastName;
<tr>
<td>
@Html.Display(conc)
</td>
</tr>
}
または、モデルにプロパティFullNameを含める方が良い解決策になります