Вы фактически не показали, как вы вызываете частичное представление и действительно ли действие вашего контроллера передало модель этому представлению.
Убедитесь, что ваш контроллер правильно инициализировал модель.Поэтому, если мы предположим, что у вас есть следующая модель:
public class MyViewModel
{
public string SelectedOption { get; set; }
public IEnumerable<SelectListItem> SelectOptions { get; set; }
}
и следующее действие контроллера:
public ActionResult Foo()
{
var model = new MyViewModel();
model.SelectOptions = new[]
{
new SelectListItem { Value = "1", Text = "item 1" },
new SelectListItem { Value = "2", Text = "item 2" },
new SelectListItem { Value = "3", Text = "item 3" },
};
return View(model);
}
десять, вы можете получить соответствующее представление, которое будет вызывать частичное:
@model MyViewModel
@Html.Partial("_MyPartial", Model)
и _MyPartial.cshtml
:
@model MyViewModel
@Html.DropDownListFor(x => x.SelectedOption, Model.SelectOptionOptions)
Обратите внимание, что вам нужно 2 свойства в вашей модели представления для создания раскрывающегося списка => скалярное свойство (SelectedOption
), котороебудет использоваться для привязки выбранного значения и свойства коллекции, которое будет содержать список значений, которые вы хотите отобразить в раскрывающемся списке (SelectOptionOptions
).
В вашем коде вы используете одно и то же свойство для обоих, что неверно:
@Html.DropDownListFor(m => m.SelectOption, Model.SelectOption)