Заполнить DropDownListFor: HtmlHelper не содержит определения для «DropDownListFor» - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть постоянно меняющийся список отраслей, из которых я бы хотел, чтобы пользователь выбирал при создании нового опроса.

Я мог бы сделать это с помощью ViewModel или ViewBag (я думаю).Я пытаюсь сделать это с ViewBag.Получение ошибки DropDownListFor:

CS1928 HtmlHelper<Survey> не содержит определения для DropDownListFor, а лучшая перегрузка метода расширения SelectExtensions.DropDownListFor<TModel, TProperty>(HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, object) имеет некоторые недопустимые аргументы 2_Views_Surveys_Create.cshtml

Модель опроса с внешним ключом для промышленности:

public class Survey
    {
        [Key]
        public int id { get; set; }

    [Display(Name = "Survey Name")]
    public string name { get; set; }

    [Display(Name = "Industry")]
    public int industryId { get; set; }

    [ForeignKey("industryId")]
    public virtual Industry industry { get; set; }

}

Контроллер для загрузки списка отраслей промышленности в ViewBag:

// GET: Surveys/Create
public ActionResult Create()
{
    ViewBag.Industries = new SelectList(db.industry, "Id", "Name");
    return View();
}

Создание представления:

<div class="form-group">
    @Html.LabelFor(model => model.industryId, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownListFor(model => model.industryId, ViewBag.Industries, "-Select Industry-")
        @Html.ValidationMessageFor(model => model.industryId, "", new { @class = "text-danger" })
    </div>
</div>

1 Ответ

0 голосов
/ 10 сентября 2018

Свойства ViewBag не имеют типа, который компилятор может использовать, чтобы решить, какую перегрузку метода вызвать. Помогите компилятору с помощью явного приведения.

@Html.DropDownListFor(model => model.industryId, (IEnumerable<SelectListItem>)ViewBag.Industries, "-Select Industry-")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...