Lista que se llena parcialmente Id no se va a buscar usando Dapper

asp.net asp.net-mvc-4 dapper razor stored-procedures

Pregunta

Intento rellenar la lista desplegable con Dapper pero cuando obtengo los valores del ID stored procedure no se recupera, solo se obtiene el nombre. No sé dónde me estoy equivocando. Aquí está mi Código

Controlador

public ActionResult Index()
    {
        string str = @"Data Source=DEV_3\SQLEXPRESS;Initial Catalog=DB_Naved_Test;Integrated Security=True";
        SqlConnection con = new SqlConnection(str);
        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");
        ViewData["country"] = list;
        return View();
    }

enter image description here

Modelo

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

Ver

@using (Html.BeginForm())
{
@Html.DropDownList("Country", ViewData["country"] as SelectList, "Select Country", new { id = "Country", style = "width: 150px;" })<br />
<select id="State" name="state" , style="width: 150px;"></select><br />
<select id="city" name="City" , style="width: 150px;"></select><br />
}

@Scripts.Render("~/bundles/jquery")
<script type="text/jscript">
  $(function ()
{
    $('#Country').change(function ()
    {        
        $.getJSON('/Cascading/StateList/' + $('#Country').val(), function (data)
        {
            var items = '<option>Select State</option>';
            $.each(data, function (i, state)
            {
                items += "<option value='" + state.Value + "'>" + state.Text + "</option>";
            });
            $('#State').html(items);
        });
    });

    $('#State').change(function ()
    {
        $.getJSON('/Cascading/Citylist/' + $('#State').val(), function (data)
        {
            var items = '<option>Select City</option>';
            $.each(data, function (i, city)
            {
                items += "<option value='" + city.Value + "'>" + city.Text + "</option>";
            });
            $('#city').html(items);
        });
    });
});

Procedimiento almacenado

ALTER procedure [dbo].[Sp_MVCDapperDDl]
 (
 @Type int,
 @CountryId int=0,
 @StateId int=0 
 )
 as
 if @Type=1
 begin
 select * from tbl_country
 end
 if @Type=2
 begin
  select * from tbl_states where cid=@CountryId
 end
 if @Type=3
 begin
 select * from tbl_cities where stateid=@StateId
 end

Respuesta aceptada

Solo se necesitaba una pequeña edición ahora funciona bien

public class Region
{
    private int _cid;
    public int Cid
    {
        get { return _cid; }
        set { _cid = value; }
    }
private string _CountryName;
public string CountryName
{
    get { return _CountryName; }
    set { _CountryName = value; }
}

}



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué