c# - 将数据传递到我的 View 时出错?

标签 c# html asp.net-mvc

我正在使用 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/

相关文章:

asp.net-mvc - 使用 ASP.Net MVC 的状态机工作流程

c# - 处理从数据库返回的空日期

javascript - Div 在 ng-click 自定义指令返回的元素时不显示

asp.net-mvc - asp.net mvc : thousand separator for int value

php - 如何使用多个字段使用表单中的数据搜索 MySQL 数据库

javascript - 单击按钮时表格移动到 j-query 指定位置 - 然后返回

MySql异常(0x80004005): : Access denied for user

c# - 迭代 .Net 网站项目 C# 中的所有 app_code 类型

c# - 查找具有数百万个元素的两个列表或哈希集之间的公共(public)元素数

c# - Stackoverflow - 具有构造函数和初始值设定项的两个类之间的无限递归