範本只能配合欄位存取、屬性存取、單一維度陣列索引或單一參數自訂索引子運算式使用。
我想跑一個 DisplayTemplate 它的結構是
@model List<string> @foreach (var str in Model) { <span class="label label-default">@str</span> }
目的是要讓 list
http://getbootstrap.com/components/#labels
我要展示的是供應商的名稱,但是目前 ViewModel 的 prop 只有兩個,一個是 MultiSelectList 另一個是 List
所以我想到這樣做
@Html.DisplayFor(model => model.Suppliers .Where(supp => model.SelectedSupplierCodes.Contains(supp.Value)) .Select(supp => supp.Text), "ListStringToLbl")
感覺上對,也編得過,但執行時期卻噴掉了,查了一下 DisplayFor Template 這個用法參數似乎只能是 model 原生的 prop。
解決的辦法是只好把 linq 移回 Controller 進行,然後增加一個專門給供應商名稱用的 prop。
// Controller public override ActionResult Detail(string xxxCode) { ... _xxxViewModel.SelectedSupplierTexts = _xxxViewModel.Suppliers .Where(supp => _xxxViewModel.SelectedSupplierCodes.Contains(supp.Value)) .Select(supp => supp.Text).ToList(); ... } // View @Html.DisplayFor(model => model.SelectedSupplierTexts, "xxxTemplate")
ref: stackOverFlow
沒有留言:
張貼留言