0

我将国家/地区列表存储在数据库中,并在我编辑任务时使用 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]);
            }
        }

在 lst[0].Country 是我想在下拉列表中默认选择的值。我的看法是

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

1 回答 1

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";
于 2013-06-28T06:35:55.123 回答