如何在asp.net mvc中使用for循环的编辑页面中绑定下拉列表

本文关键字:循环 for 编辑页面 下拉列表 绑定 asp net mvc | 更新日期: 2023-09-27 18:07:56

我正在编写不同类型的代码从谷歌,但它不是在下拉菜单中显示正确的值。它在文本框中显示正确的值,但在下拉框中不显示选中的值。

public Int64 EvaluationInfoID { get; set; }
public Int64 EvalCategoryID { get; set; }
public string EvalCategoryName { get; set; }
public string EvalCategoryDesc { get; set; }
public Int64 UserID { get; set; }
public DateTime? EvaluationDate { get; set; }
public int EvalTypeID { get; set; } 
控制器

var models = new List<EvaluationInfoViewModel>();
ViewBag.GridState = this.GridRouteValues();
string serachCriteria = string.Format("created_by={0} and to_date(to_char(evaldate,'MM/DD/YYYY'),'MM/DD/YYYY')={1} ", Convert.ToInt32(Session["UserID"]), "to_date('" + evaldate.ToShortDateString() + "','MM/DD/YYYY')");
PODService.EvaluationInfo[] getData = service.GetEvaluationInfoBySearchCriteria(serachCriteria);
PODService.EvaluationCategory[] evalcat = service.GetEvalCategoryBySearchCriteria(" EC.Eval_ID= 1");//150811VP: For Self Evaluation Eval_ID=1
PODService.EvaluationType[] evalTypes = service.GetEvaluationTypeList();
ViewData["EVALTYPE"] = new SelectList(evalTypes, "EvaluationType_ID", "EvaluationType_Name");

for (var i = 0; i < getData.Length; i++)
{
    models.Add(new EvaluationInfoViewModel());
}
for (var i = 0; i < models.Count; i++)
{
    string serachCriteria1 = string.Format("created_by={0} and to_date(to_char(evaldate,'MM/DD/YYYY'),'MM/DD/YYYY')={1} ", Convert.ToInt32(Session["UserID"]), "to_date('" + evaldate.ToShortDateString() + "','MM/DD/YYYY')");
    models[i].EvalCategoryID = getData[i].EvalCategory_ID;
    models[i].EvalCategoryName = getData[i].EvalCategoryName;
    //models[i].EvalCategoryDesc = getData[i].Eval_CategoryDescription;
    models[i].UserID = Convert.ToInt64(Session["UserID"]);
    models[i].EvaluationDate = getData[i].EvaluationDate;
    models[i].EvalTypeID = getData[i].EvalTypeID;
    ViewData["EVALTYPEInfo"] = new SelectList(evalTypes, "EvaluationType_ID", "EvaluationType_Name", models[i].EvalTypeID);
<<p> 视图/strong>
@model  List<PODWeb.Models.EvaluationInfoViewModel>
@{
    Layout = null;
}
@using (Html.BeginForm("EditEvaluationInfo", "EvaluationInfo", FormMethod.Post))
{  
    <table border="1px" style="margin-left: 122px">
        <tr>
            <td>
                <table>
                    @for (var i = 0; i < Model.Count(); i++)
                    {
                        @Html.HiddenFor(m=>m[i].UserID)
                        @Html.HiddenFor(m=>m[i].EvaluationDate)
                        @Html.HiddenFor(m =>m[i].EvalTypeID)
                        <tr>
                            <td>
                                @Model[i].EvalCategoryName
                            @Html.EditorFor(m =>m[i].EvalTypeID)
                            </td>
                            <td>
                              @*@Html.DropDownListFor(m => m[i].EvalTypeID, ViewData["EVALTYPEInfo"] as IEnumerable<SelectListItem>, "Select Rating", new { @style = "width:200px" })*@

                            </td>
                        </tr>
                        <tr>
                            <td>
                                @Model[i].EvalCategoryDesc
                                @Html.HiddenFor(m => m[i].EvalCategoryID)
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                <hr />
                            </td>
                        </tr>

                    }
                    <tr>
                        <td>
                            <input type="submit" name="Save" value="Save" class="t-button" style="margin-left: 471px" />
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
}

我想在下拉列表中显示选定的evaltypeid,但它没有显示。

如何在asp.net mvc中使用for循环的编辑页面中绑定下拉列表

您已经注释掉了下拉列表的代码:

@*@Html.DropDownListFor(m => m[i].EvalTypeID, 
  ViewData["EVALTYPEInfo"] as IEnumerable<SelectListItem>, 
      "Select Rating", new { @style = "width:200px" })*@

您需要移除外部的@**@

@Html.DropDownListFor(m => m[i].EvalTypeID, 
   ViewData["EVALTYPEInfo"] as IEnumerable<SelectListItem>, 
     "Select Rating", new { @style = "width:200px" })

也从你的代码中删除@Html.EditorFor(m =>m[i].EvalTypeID)