ASP.Net MVC 3 Razor Concatenate String

时间:2012-05-29 10:58:51

标签: asp.net-mvc-3 razor concatenation string-concatenation

我在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 View中连接字符串?

谢谢大家。

修改

我的Razor View接受一个看起来像这样的ViewModel

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

我想将FullName属性放在这里,正如Roy所建议的那样,但是,我不知道如何让它工作?

4 个答案:

答案 0 :(得分:18)

DisplayFor需要一个属性来映射,因此连接是不可能的。您可以在模型上公开只读属性FullName,然后返回串联:

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

然后在DisplayFor中使用它。

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

答案 1 :(得分:5)

@ Html.DisplayFor(modelItem =&gt; item.FirstName)@ Html.DisplayFor(modelItem =&gt; item.LastName)

答案 2 :(得分:2)

你可以这样做:

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

或者在模型中使用属性FullName是更好的解决方案

答案 3 :(得分:0)

以下是在 .CSHTML

中连接不同字符串的语法

@($“ {User.FirstName} {User.MiddleName} {User.LastName}”)