Comment remplir la liste déroulante dans MVC-4 en utilisant dapper

asp.net-mvc asp.net-mvc-4 dapper

Question

J'ai rempli la liste déroulante dans MVC qui fonctionne bien mais maintenant je veux le faire en utilisant Dapper mais je suis resté bloqué.

DropDownList dans MVC sans Dapper

Manette

  [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;

    }

Vue

@{ 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(); }

C'est ce que j'essaie de faire maintenant

DropDownList dans MVC avec Dapper

Modèle

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; }
    }

Manette

[HttpPost]
    public ActionResult AddMobiles(TBMobileDetails MD, HttpPostedFileBase file)
    {
        FileUpload(file);
        MobileMain MM = new MobileMain();
        MM.AddMobiles(MD);
        FillCountry();         
        return RedirectToAction("AllMobileList");
    }

Coincé dans cette partie comment le remplir en utilisant dapper? Comment remplir ma liste?

    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);
    }

Vue

  @{ 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(); }

Réponse acceptée

Vous ViewData["country"] dans ViewData["country"] objet de type IEnumerable<Region> alors que dans View vous le IEnumerable<SelectListItem> en IEnumerable<SelectListItem> qui ne fonctionnera évidemment pas dans l'action change FillCountry() pour faire SelectList :

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");
    }

et dans la vue maintenant le lancer à SelectList :

@Html.DropDownList("country", ViewData["country"] as SelectList, new {onchange = "this.form.submit();" })

Cela va vous faire avancer.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi