当使用viewdata [“Country”]并从数据库获取列表时,如何在下拉列表中默认选择值

时间:2013-06-28 06:29:04

标签: asp.net-mvc-3

我有国家列表存储在数据库中并使用viewdata存储所有列表现在当我编辑我的任务然后我想在下拉列表中设置我的值。我的代码是

 public ActionResult Edit(long EventId)
        {
            using (Event objEvent = new Event())
            {
                List<EventObject> lst = new List<EventObject>();
                lst = objEvent.GetEventByEventId(EventId);

                using (Country objContry = new Country())
                {
                    ViewData["Country"] = new SelectList(objContry.GetAllCountry(), "Country", "Country");
                }

                return View(lst[0]);
            }
        }

at lst [0] .Country是我想要在下拉列表中默认选择的值。 我的观点是

    <h5>Country</h5>
 @Html.DropDownListFor(model => model.Country, (SelectList)ViewData["Country"], new { id = "ddlCountry" })

1 个答案:

答案 0 :(得分:1)

您似乎将下拉列表绑定到模型(Country)上的复杂属性,这显然不受支持。下拉列表应仅绑定到简单标量类型属性。因此,您应该定义一个属性,该属性将保留EventObject视图模型上的选定值:

public string SelectedCountry { get; set; }

然后在您的控制器操作中,您应该将此属性设置为您要预选的国家/地区的值:

using (Country objContry = new Country())
{
    ViewData["Countries"] = new SelectList(objContry.GetAllCountry(), "Country", "Country");
}

lst[0].SelectedCountry = "Argentina";

return View(lst[0]);

并在您看来:

@Html.DropDownListFor(
    model => model.SelectedCountry, 
    (SelectList)ViewData["Country"], 
    new { id = "ddlCountry" }
)

如果您的Country属性是标量类型,您可以直接为其指定值:

lst[0].Country = "Argentina";