嘿朋友我在我的mvc 3项目中使用下拉列表。在这里,用户选择其中一个选项并保存。当他/她重新访问页面时,我必须将最初保存的值作为选定值。实际上我正在根据需要使用自定义html帮助程序。但是我遇到了问题。我这样做:
else if (question_type == 7)
{
EAI.DAL.EaiEntities entities = new DAL.EaiEntities();
QuestionnaireRepository repository = new QuestionnaireRepository(entities);
SelectList typesList = repository.PopDdlList(qid);
output.Append(helper.Label(questiontext));
if (answer == "")
{
output.Append(helper.DropDownList("ddl" + question_id, typesList, "-- select type----));
}
else
{
output.Append(helper.DropDownList("ddl" + question_id, typesList, answer));
}
return helper.Raw(output.ToString());
}
实际上,上面的代码从数据库中呈现所选的值,但它实际上替换了“ - select type ---”。因此,如果我访问同一页面并保存页面,则保存一次后,我可以在Formcollection中获取空值。
所以,请建议适当的方法
答案 0 :(得分:1)
我通常在我的模型中添加一些属性:
int SelectedCategory { get; set; }
IEnumerable<SelectListItem> Categories { get; private set; }
然后在我的模型构造函数中加载数据:
ProductService productService = new ProductService();
this.Categories =
productService.GetCategories()
.Select(c => new SelectListItem() { Text = c.Name, Id = c.Id.ToString() });
this.Categories.InsertAt(0, new SelectListItem() { Text = "--- Please Select ---", value = "" });
然后在我的Razor标记中做了类似的事情:
@Html.DropDownListFor(m => m.SelectedCategory, Model.Categories)
这应该以标准的MVC方式自动连线。希望这会有所帮助。