mvc 3中的下拉列表

时间:2012-01-18 13:25:09

标签: asp.net-mvc-3

嘿朋友我在我的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中获取空值。

所以,请建议适当的方法

1 个答案:

答案 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方式自动连线。希望这会有所帮助。