我正在Asp.net MVC中创建一个网站。我目前正在开发一个页面,其中包含根据用户统计信息创建的下拉列表。为此,我设置了一个imageView.image = UIImage(CIImage: (filter.outputImage)!)
,它使用增量系统来完成这个随机生成的系统。在我的Post方法中,我可以通过调用@Html.DropDownListFor
获取下拉值,依此类推如下所示。
我的问题是,当我运行程序时,我的RightsFor_1
代码行中出现了下面所述的错误。
视图中的代码Snippit:
@Html.DropDownListFor
我目前正尝试使用以下方法访问控制器中的值:
@for(int i = 0; i < Model.labPermData.Count(); i++)
{
<div class="row">
<div class="col-md-2">
<b>@Html.DisplayFor(m => m.labPermData[i].Lab.LabName)</b>
</div>
<div class="col-md-2">
@Html.DropDownListFor(m=>"RightsFor_"+m.labPermData[i].Lab.LabName, Model.lpdd, "Select One")
</div>
<div class="col-md-8">
</div>
</div>
}
收到错误:
模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。
答案 0 :(得分:2)
你不能像这样在lambda表达式中附加字符串。将名称属性添加到使用递增名称的下拉列表中。
@Html.DropDownListFor(m=>m.labPermData[i].Lab.LabName, Model.lpdd, "Select One", new { name = "RightsFor_" + m.labPermData[i].Lab.LabName })
您可以做的其他事情是在将字符串放入lambda之前创建字符串。
@{ string rightsFor = "RightsFor_" + m.labPermData[i].Lab.LabName; }
@Html.DropDownListFor(m=>rightsFor, Model.lpdd, "Select One")
答案 1 :(得分:1)
你考虑使用foreach而不是for循环吗?
这应该是关闭的
@foreach (var lab in Model.ToList())
{
<div class="row">
<div class="col-md-2">
<b>@lab.LabName</b>
</div>
<div class="col-md-2">
@Html.DropDownListFor(m=>"RightsFor_"+lab.LabName, Model.lpdd, "Select One")
</div>
<div class="col-md-8">
</div>
</div>
}