首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用dapper在MVC-4中填充下拉列表

如何使用dapper在MVC-4中填充下拉列表
EN

Stack Overflow用户
提问于 2015-05-04 06:21:02
回答 1查看 3.3K关注 0票数 1

我在MVC中填写了下拉列表,它工作得很好,但是现在我想使用Dapper来完成它,但是被卡住了。

没有Dapper的MVC中的DropDownList

控制器

代码语言:javascript
复制
  [HttpPost]
    public ActionResult Create(User ur)
    {
        string str = @"Data Source=DEV_3\SQLEXPRESS;Initial Catalog=DB_Naved_Test;Integrated Security=True";
        SqlConnection con = new SqlConnection(str);
        string query = "Insert into tblTest (Name,Email,MobileNo) values('" + ur.Name + "','" + ur.Email + "','" + ur.MobileNo + "')";
        con.Open();
        SqlCommand cmd = new SqlCommand(query, con);
        cmd.ExecuteNonQuery();
        con.Close();
        TempData["msg"] = "<script>alert('Inserted Successfully');</script>";
        ModelState.Clear();
        FillCountry();

    }
    public void FillCountry()
    {
        string str = @"Data Source=DEV_3\SQLEXPRESS;Initial Catalog=DB_Naved_Test;Integrated Security=True";
        SqlConnection con = new SqlConnection(str);
        string query = "select * from tbl_country ";
        SqlCommand cmd = new SqlCommand(query, con);
        con.Open();
        SqlDataReader rdr = cmd.ExecuteReader();
        List<SelectListItem> li = new List<SelectListItem>();
        li.Add(new SelectListItem { Text = "Select", Value = "0" });
        while (rdr.Read())
        {
            li.Add(new SelectListItem { Text = rdr[1].ToString(), Value = rdr[0].ToString() });
        }

        ViewData["country"] = li;

    }

视图

代码语言:javascript
复制
@{ Html.BeginForm("Create", "User", FormMethod.Post, new { enctype = "multipart/form-data" }); }
@Html.DropDownList("country", ViewData["country"] as List<SelectListItem>, new {onchange = "this.form.submit();" })
@{ Html.EndForm(); }

这就是我现在想做的

用Dapper实现MVC中的DropDownList

模型

代码语言:javascript
复制
public class Region
{
    private int _CountryId;
    private string _CountryName;

    public int CountryId
    {
        get { return _CountryId; }
        set { _CountryId = value; }
    }


    public string CountryName
    {
        get { return _CountryName; }
        set { _CountryName = value; }
    }

控制器

代码语言:javascript
复制
[HttpPost]
    public ActionResult AddMobiles(TBMobileDetails MD, HttpPostedFileBase file)
    {
        FileUpload(file);
        MobileMain MM = new MobileMain();
        MM.AddMobiles(MD);
        FillCountry();         
        return RedirectToAction("AllMobileList");
    }

卡在这部分,怎么用脱衣机来填充呢?如何填充我的列表?

代码语言:javascript
复制
    public void FillCountry()
    {
        List<Region> li = new List<Region>();
        var para = new DynamicParameters();
        para.Add("@Type", 1);
        var result = con.Query<Region>("Sp_MVCDapperDDl", para, commandType: CommandType.StoredProcedure);
    }

视图

代码语言:javascript
复制
  @{ Html.BeginForm("AddMobiles", "AddMobile", FormMethod.Post, new { enctype = "multipart/form-data" }); }
    @Html.DropDownList("country", ViewData["country"] as List<SelectListItem>, new { onchange = "this.form.submit();" })
    @{ Html.EndForm(); }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-04 09:37:34

您正在传递类型为ViewData["country"]IEnumerable<Region>对象,而在视图中则将其转换为IEnumerable<SelectListItem>,这在操作中不会明显工作,因此更改FillCountry()以生成SelectList

代码语言:javascript
复制
public void FillCountry()
    {
        List<Region> li = new List<Region>();
        var para = new DynamicParameters();
        para.Add("@Type", 1);
        var result = con.Query<Region>("Sp_MVCDapperDDl", para, commandType: CommandType.StoredProcedure);
        var list = new SelectList(result,"CountryId","CountryName");
    }

在View中,现在将其转换为SelectList

代码语言:javascript
复制
@Html.DropDownList("country", ViewData["country"] as SelectList, new {onchange = "this.form.submit();" })

这会让你走的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30023746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档