如何在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,但它没有显示。
您已经注释掉了下拉列表的代码:
@*@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)