使用viewbag将数据绑定到MVC3中的partialview的下拉列表

时间:2012-02-22 10:19:10

标签: asp.net-mvc-3 partial-views

我想在MVC 3中创建一个局部视图控件,以便在我的整个应用程序中使用此控件。在我的部分视图中,有2个下拉列表,一个用于国家,另一个用于州。但是当我使用它时我得到了错误。请问如何在MVC中完成一个完美的用户控制?如何通过视图包将数据从sql绑定到DDL?

感谢。

1 个答案:

答案 0 :(得分:4)

您需要在DDL中显示IEnumerable, 尝试以下示例(我没有测试过,可能存在某些类型错误)

定义您的模型,

public class MyModel
{
public SchduleEnum SelectedCountry{ get; set; }
public ProgramCatagory SelectedState{ get; set; }
private IEnumerable<SelectListItem> stateList;
private IEnumerable<SelectListItem> countriesList;

public IEnumerable<SelectListItem> CountriesList;
{
    get { return this.countriesList;}
}

public IEnumerable<SelectListItem> StateList
{
    get { return this.stateList }
}

private void SetCountryList(IEnumerable<string> countries)
{
    List<SelectListItem> items=new List<SelectListItem>();
    countries.ToList().ForEach(s=>{            
        items.Add(new SelectListItem()
            {
                Text = s,
                Value = s
            });
    });
    this.countriesList = items;
}

private void SetStateList(IEnumerable<string> states)
{
    List<SelectListItem> items = new List<SelectListItem>();
    states.ToList().ForEach(s =>
    {
        items.Add(new SelectListItem()
        {
            Text = s,
            Value = s
        });
    });
    this.stateList= items;
}
}

定义您的控制器操作,例如

public PartialViewResult GetCountryList()
{

    MyModel model = new MyModel();
var countries= *** ;//service call to get countries list
var states = *** ;//service call to get stateslist
    model.SetCOuntryList(countries);
    model.SetStateList(states);
    return View(model);
}

并在视图中

<%:Html.DropDownListFor(m=>m.SelectedCountry,Model.countriesList)%>
<%:Html.DropDownListFor(m=>m.SelectedSState,Model.stateList) %>