我試圖解決錯誤'列表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