如何使用ado.net将列值从数据库绑定到mvc4中的html下拉列表

时间:2013-03-21 09:51:17

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

我想使用mvc4中的storedprocedure将数据库的列值绑定到dropdownlist 我不知道如何处理这个.plz帮助我

我的模型代码是这样的

 public class dropdown
{
    string conn = System.Configuration.ConfigurationManager.ConnectionStrings["cnstr"].ConnectionString;
    [Required(ErrorMessage = "DomainName is Required")]
    [Display(Name = "DomainName")]
    public string DomainName { get; set; }
    public IEnumerable<dropdown> obj { get; set; }

    public List<dropdown> LoadDomain(dropdown model)
    {
        List<dropdown> obj = new List<dropdown>();
        using (SqlConnection con = new SqlConnection(conn))
        {

            try
            {
                con.Open();
                SqlCommand cmd = new SqlCommand("selectDomainName", con);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
                {
                    var data = new dropdown();
                    data.DomainName = ds.Tables[0].Rows[i]["DomainName"].ToString();
                    obj.Add(data);
                }
            }
            catch
            {
            }
        }
        return obj;

obj中我获得了所有列值

我的控制器代码

 public ActionResult binddropdown(dropdown model1)
    {

            var x = model1.LoadDomain(model1);

            ViewData. = x;

            return View(model1);

    }

我不知道我是否正朝着方向前进。我是初学者,所以我建议我。

1 个答案:

答案 0 :(得分:2)

您可以在viewbag中设置数据,然后在正面,您可以循环访问数据并为您的下拉框指定值。在这里你可以做的是,

public ActionResult binddropdown(dropdown model1)
{
        var x = model1.LoadDomain(model1);
        viewbag.MyData = x;
        return View();
}

并且在前端,您可以从viewbag获取数据(如果需要,使用类型转换转换为适当的类型)并且可以像这样分配给html标签,

   @{
 var a = (yourobjtypecast) viewbag.MyData ;
<select name="drpId" id="drpId">
      <option value="yourvalue"> Select </option>

                @foreach (var te in a)
                {
                    <option value='@te.ID.ToString()'>@te.Nam </option>

                }
 </select>
}

我希望这项工作。