ASP.Net MVC 3 Строка конкатенации бритвы

У меня есть следующее в моем ASP.Net MVC 3 Razor View

@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?

Спасибо всем.

ИЗМЕНИТЬ

My Razor View принимает ViewModel, который выглядит как

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

Я хотел бы поместить здесь свойство FullName, как полагает Рой, однако я не уверен, как заставить его работать.

Ответ 1

DisplayFor требуется свойство для сопоставления, поэтому конкатенация невозможна. Вы можете открыть свойство FullName для чтения только для своей модели, которое затем возвращает конкатенацию:

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

а затем используйте это в DisplayFor.

@Html.DisplayFor(modelItem => modelItem.FullName);

Ответ 2

 @Html.DisplayFor(modelItem => item.FirstName) @Html.DisplayFor(modelItem => item.LastName)

Ответ 3

Вы можете сделать это:

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

Или было бы лучшим решением иметь свойство FullName в модели

Ответ 4

Новичок в Razor, так что простите за простые вопросы. Где бы я создал класс "полное имя" в модели для самой БД? Я попытался там, и он не узнал основной класс БД.

Ответ 5

Или же:

@Html.Display(String.Concat(item.User.FirstName.Trim()," ",User.LastName.Trim()))