我对此有点困惑。 我转移到View页面的ViewModel包含两个属性:
public class UserProfileViewModel
{
public ApplicationUser userProfile { get; set; }
public AddressViewModel userAddress { get; set; }
}
AddressViewModel本身包含一个List,其项目我想要显示View Page:
public class AddressViewModel
{
public int ID { get; set; }
......
public virtual List<GeoData> GeoDataList { get; set; }
}
我在Wiew Page
上试试这个@model MySite.ViewModels.UserProfileViewModel
...
@foreach (var item in Model.userAddress.GeoDataList)
{
<dd>
@Html.DisplayFor(modelitem => item.PlaceName)
</dd>
}
我正确地得到了被删除的结果 但是当我试图显示我需要的复合结果时
@foreach (var item in Model.userAddress.GeoDataList)
{
<dd>
@Html.DisplayFor(modelitem => (item.PlaceName + ", " + item.PostalCode + ", " + item.Latitude + ", " + item.Longitude))
</dd>
}
我得到以下异常:
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
当我尝试这个时:
@foreach (var item in Model.userAddress.GeoDataList)
{
<dd>
@Html.Display(item.PlaceName + ", " + item.PostalCode + ", " + item.Latitude + ", " + item.Longitude)
</dd>
}
我没有例外,也没有任何结果(空白页)。
为什么?
答案 0 :(得分:1)
你可以使用@Html.Raw
显示没有任何html编码的结果
@foreach (var item in Model.userAddress.GeoDataList)
{
<dd>
@Html.Raw(item.PlaceName + ", " + item.PostalCode + ", " + item.Latitude + ", " + item.Longitude)
</dd>
}
答案 1 :(得分:0)
您需要GeoData类的显示模板。显示模板是控制器文件夹或共享中DisplayTemplates子文件夹中名为GeoData.cshtml的局部视图。
您的GeoData.cshtml将类似于
@model MySite.ViewModels.GeoData
@Model.PlaceName, @Model.PostalCode, @Model.Latitude, @Model.Longitude
您的UserProfile页面代码如
<dd>
@Html.DisplayFor(modelitem => item)
</dd>