我试图解决错误'列表ActiveOrder02不包含客户端的定义',当我将鼠标放在'.Client'上 @ Html.DisplayNameFor(model = >在下面查看model.ActiveOrders02.Client) :ASP.NET MVC查看期问题
@model MVCDemo2.ViewModels.Order02VM
<table class="table">
<tr><th>@Html.DisplayNameFor(model => model.ActiveOrders02.Client)</th></tr>
@foreach (var item in Model.ActiveOrders02)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Client)</td>
</tr>
}
有关的信息在这里是控制器和视图模型:
using MVCDemo2.Models;
using MVCDemo2.ViewModels;
using System.Linq;
using System.Web.Mvc;
namespace MVCDemo2.Controllers
{
public class Order02Controller : Controller
{
private InventoryContainer db02 = new InventoryContainer();
// GET: Order02
public ActionResult Index()
{
//Create instance of the (View)Model
var o = new Order02VM();
//Retrieves DATA from the DB
var resultSet02 = db02.SampleDbTable;
// Push the retrieved DATA into the (View)Model
o.ActiveOrders02 = resultSet02.Select(x => new ActiveOrder02
{
ID = x.tableId,
Client = x.tableClient
}).ToList();
//EDIT caused by answer of @David
return View(o);
//IT WAS: return View(o.ActiveOrders02.ToList());
}
}
}
在这里如下视图模型:
using System.Collections.Generic;
namespace MVCDemo2.ViewModels
{
public class Order02VM
{
public List<ActiveOrder02> ActiveOrders02 { get; set; }
}
public class ActiveOrder02
{
public decimal ID { get; set; }
public string Client { get; set; }
}
}
编辑:我是什么之后,通过DisplayNameFor从SampleDbTable目前列tableClient的名称列客户端中的索引视图的标题。
谢谢!
想想为什么'model.ActiveOrders02.Client'不起作用。它在C#中不起作用,因此它在Razor中不起作用。一个'List'没有一个名为'Client'的属性。 “客户”属性位于列表中的项目中,而不是列表本身。所以目前还不清楚你想要做什么。如果'Client'属性在'Order02VM'上更有意义,那么将它移动到那里。或者它在正确的位置定义,然后改变你如何访问它。例如'model.ActiveOrders02.First()。Client'。 –
mason
感谢您的评论!, 由DisplayNameFor(model => model.ActiveOrders02.Client 我试图通过从SampleDbTable的列的标题中获取此列的标题以设置此列的标题。 – Angel