MVC-4에서 드롭 다운리스트를 채우는 방법

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

문제

드롭 다운 목록을 잘 작동하는 MVC 있지만 이제 Dapper 사용하여 할 싶었지만 붙어있어.

Dapper가없는 MVC의 DropDownList

제어 장치

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

    }

전망

@{ 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

모델

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

제어 장치

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

이 부분에 어떻게 쌓아 올리는가? 내 목록을 채우는 방법?

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

전망

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

수락 된 답변

보기에서 IEnumerable<SelectListItem> 캐스팅하는 동안 IEnumerable<Region> 형식의 ViewData["country"] 개체를 전달하는 중입니다.이 작업은 SelectList 를 만들기 위해 FillCountry() 를 변경 FillCountry() 분명히 작동하지 않습니다.

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

보기에서 이제 SelectList 캐스팅합니다.

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

이것은 당신을 얻을 것이다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.