在编辑模式下未选择Html.DropDownListFor值

时间:2012-10-17 04:26:23

标签: asp.net asp.net-mvc asp.net-mvc-3 html.dropdownlistfor

我成功地能够在插入时将值保存到数据库(标题值),但是当我在编辑模式下渲染相同的视图时,标题字段必须保持所选的值,但在我的情况下,标题下拉列表中没有选择任何值。 .dont知道为什么我得到一个没有选择的下拉列表,而title字段保存了存储的值(在后端)。

@Html.DropDownListFor(model => model.title, new SelectList(Model.titles, "Value", "Text"),"-Select-") // nothing selected on edit mode

 @Model.title //displaying the stored value which the user selected initially.


标题值

titles = new SelectList(ListItem.getValues().ToList(), "Value", "Text").ToList();

getValue函数

 public static List<TextValue> getValues()
      {
    List<TextValue> titles= new List<TextValue>();
    TextValue T= new TextValue();


   T.Value = "Mr";
   T.Text = "Mr";
   titles.Add(T);

    T= new TextValue();
    T.Value = "Mrs";
    T.Text ="Mrs";
       titles.Add(T);

     T= new TextValue();
   T.Value = "Miss";
   T.Text = "Miss";
    titles.Add(T);

    T= new TextValue();
    T.Value ="Other";
   T.Text = "Other";
   titles.Add(T);


    return titles;

   }

2 个答案:

答案 0 :(得分:3)

你必须使用SelectList的另一个ctor

来自msdn

SelectList(IEnumerable, String, String, Object) 
  

使用。初始化SelectList类的新实例   列表的指定项目,数据值字段,数据文本   字段和选定值

然后:

@Html.DropDownListFor(model => model.title, 
                      new SelectList(Model.titles, "Value", "Text", Model.title),
                      "-Select-") 

顺便说一句,遵循基本标准(至少)通常是个好主意:你的属性应该以大写字母char开头。

public string Title {get;set;}

答案 1 :(得分:0)

查看:

    @Html.DropDownListFor(model => model.title, Model.titles, "-Select-")

控制器:

    Model.titles = new SelectList(ListItem.getValues(), "Value", "Text");

    public static List<SelectListItem> getValues()
    {
        List<SelectListItem> titles= new List<SelectListItem>();
        SelectListItem T= new SelectListItem();

        T.Value = "Mr";
        T.Text = "Mr";
        titles.Add(T);

        T = new SelectListItem();
        T.Value = "Mrs";
        T.Text = "Mrs";
        titles.Add(T);

        T = new SelectListItem();
        T.Value = "Miss";
        T.Text = "Miss";
        titles.Add(T);

        T = new SelectListItem();
        T.Value = "Other";
        T.Text = "Other";
        titles.Add(T);

        return titles;
    }

    public ActionResult Edit(int sno)
    {
        var model = db.table.SingleOrDefault(x => x.sno == sno);
        return View(model);
    }