我正在使用 Asp.net MVC 创建一个网站。我目前正在开发一个页面,该页面将具有根据用户统计信息创建的下拉菜单。为此,我设置了一个 @Html.DropDownListFor
,它使用增量系统来实现这个随机生成的系统。在我的 Post 方法中,我可以通过调用 RightsFor_1
获取我的下拉值,如下所示。
我的问题是,当我运行我的程序时,在我的 @Html.DropDownListFor
代码行中出现了下面所述的错误。
View 中的代码片段:
@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>
}
我目前正在尝试使用此访问 Controller 中的值:
var value1 = Request["RightsFor_0"];
var value2 = Request["RightsFor_1"];
var value3 = Request["RightsFor_2"];
//... and so on
收到错误:
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
最佳答案
您不能像这样在 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")
关于c# - 将数据传递到我的 View 时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32875240/