14

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

@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プロパティを配置したいのですが、どのように機能させるのかわかりません。

4

4 に答える 4

19

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

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

そしてそれをあなたので使用しますDisplayFor

@Html.DisplayFor(modelItem => modelItem.FullName);
于 2012-05-29T11:01:58.933 に答える
7
 @Html.DisplayFor(modelItem => item.FirstName) @Html.DisplayFor(modelItem => item.LastName)
于 2013-04-04T07:16:34.700 に答える
3

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

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

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

于 2012-05-29T11:03:18.270 に答える
0

.CSHTMLでさまざまな文字列を結合するための構文は次のとおりです

@($ "{User.FirstName} {User.MiddleName} {User.LastName}")

于 2020-07-27T07:30:26.357 に答える