如何在Razor视图中绑定bropdown列表(如果视图未绑定任何模型)

时间:2014-01-02 18:23:45

标签: asp.net asp.net-mvc razor

有人可以建议我如何绑定MVC Razor视图中的下拉列表。我正在使用MVC 4.我有一个不受任何模型类绑定的视图。

public class Util { 
   public List<EmployeeType> GetEmpTypes() {
     return (new List<EmployeeType>(){ 
        new EmployeeType(){ID=101, Text="Permanent"}, 
        new EmployeeType(){ ID=102, Text="Temporary"} 
     }); 
   } 
} 

public class EmployeeType { 
   public int ID { get; set; } 
   public string Text { get; set; } 
}

我有这个示例代码。我不熟悉MVC Now之后我不知道如何将GetEmployeeTypes() Method返回的集合绑定到下拉列表

4 个答案:

答案 0 :(得分:1)

您的课程

public class Util { 
   public List<EmployeeType> GetEmpTypes() {
     return (new List<EmployeeType>(){ 
        new EmployeeType(){ID=101, Text="Permanent"}, 
        new EmployeeType(){ ID=102, Text="Temporary"} 
     }); 
   } 
} 

您的具有属性的模型类

public class EmployeeType { 
   public int ID { get; set; } 
   public string Text { get; set; } 
}

这是示例操作

public ActionResult ViewName()
{
   Util xxx=new Util();
   List<SelectList> SelectedItems =new  List<SelectList>();
   List<EmployeeType> items =xxx.GetEmpTypes();
   foreach (var t in items )
    {
          SelectListItem s = new SelectListItem();
          s.Text = t.Text;
          s.Value = t.ID;
          SelectedItems.Add(s);
    }
 ViewBag.xxxxx= SelectedItems;
 return view();
}

在视图中

@Html.DropDownList("xxxxx", new SelectList(ViewBag.xxxxx, "Text", "Value"))

  

以上代码就像一个密钥,我没有测试该代码是否成功运行。你可以知道如何从我的代码绑定下拉列表。

答案 1 :(得分:1)

我有一个像这样的类来获取所有EmployeeTypes

public class Util
{

    public List<EmployeeType> GetEmpTypes()
    {
        return (new List<EmployeeType>(){ 
        new EmployeeType(){ID=101, Text="Permanent"},
        new EmployeeType(){ ID=102, Text="Temporary"}
    });
    }
}

public class EmployeeType
{
    public int ID { get; set; }
    public string Text { get; set; }
}

在Controller中,我编写了代码来获取员工类型列表

Util obj = new Util();
        var v = obj.GetEmpTypes();
        ViewBag.EmployeeTypes = v;
        return View();

在视图中我编写了用于绑定下拉列表的代码。

@Html.DropDownList("EmployeeTypes",new SelectList(ViewBag.EmployeeTypes,"ID","Text"));

谢谢@Ramesh Rajendran(现在我理解了绑定下拉列表的概念)

答案 2 :(得分:1)

* 强文 *你应该像这里一样创建模型选择列表:

public static List<EmployeeType> GetEmpTypes() {
     return (new List<EmployeeType>(){ 
        new EmployeeType(){ID=101, Text="Permanent"}, 
        new EmployeeType(){ ID=102, Text="Temporary"} 
     }); 
   } 
  public static SelectList GetMyEmpTypes
            {
                get { return new SelectList(GetEmpTypes(), "ID", "Text"); }
            }

然后在下拉列表中访问此方法,如

@Html.DropDownList("Name",yourProjectNameSpace.Util.GetMyEmpTypes())

当您提交表单时,它会使用“名称获得发布到控制器”的价值进行出价。

答案 3 :(得分:0)

没有必要与模型类绑定。您可以使用您在视图中给出的名称在控制器上接收值:

  @Html.DropDownList("Name",yourProjectNameSpace.YourClass.GetEmpTypes())

现在您可以在控制器中重现名称值,如:

public ActionResult test(String Name)
{
 return view();
}

并使您的方法保持静态,即GetEmpTypes(),以便您可以从视图中访问它。