在我看来,我使用的是editortemplate,如下所示:
edit.cshtml
@model NetasCrm.Models.CRM_OPP_DETAILS
<table class="table table-hover">
<thead>
<tr>
<th>Çözüm</th>
<th>Üretici</th>
<th>Tarih</th>
<th>Tutar</th>
<th>Sil</th>
</tr>
</thead>
<tbody>
@Html.EditorFor(model => model.CRM_SOLUTION_DISTRIBUTION, new { Solutions = ViewBag.Solutions, Vendors = ViewBag.Vendors })
@Html.HiddenFor(model => model.ID)
</tbody>
</table>
它正在工作,但我正在尝试做一些事情(添加where子句。)如下所示为我的模型中的一些项目创建一个编辑器模板。
@Html.EditorFor(model => model.CRM_SOLUTION_DISTRIBUTION.Where(p=>p.AMOUNT != 0), new { Solutions = ViewBag.Solutions, Vendors = ViewBag.Vendors })
我收到以下错误:
模板只能用于字段访问,属性访问, 单维数组索引或单参数自定义索引器 表达式。
答案 0 :(得分:3)
不应该使用@Html.EditorFor()
的方式,错误信息明确说明。
要渲染您想要的内容,您可以使用Html.Partial()
,也可以在模型中创建单独的属性,然后将Where
移动到它的getter。
答案 1 :(得分:1)
Html.XxxFor
期望一个lambda表达式从模型中选择一个属性。这用于标识将要编辑的模型的属性。
您尝试实现的目标可能就是使用编辑器模板可以实现的目标。
有关编辑器模板及其实施的有趣文章:
在第二篇文章中,您可以看到,如果您有一个包含要编辑的数据的自定义类,则可以创建一个模板,如果您为其编辑正确的名称并将其保存在右侧,则该模板会自动用于编辑器地点。您可以使用单个字段创建一个类,并将其包含在模型中而不是原始属性中。这也允许一次编辑多个属性(声明具有这些属性的类)
其他选项是自定义html助手: