将数据传递给我的视图时出错?

时间:2015-09-30 20:41:06

标签: c# html asp.net-mvc

我正在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>
        }

收到错误:

  

模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。

2 个答案:

答案 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>
}