Как получить доступ к дочерним спискам на странице cshtml через модель - PullRequest
0 голосов
/ 15 января 2019

Невозможно получить доступ к модельным переменным типа List на странице cshtml. Вот мой класс модели

public class MBilling
{
    public List<string> plist { get; set; }
    public List<decimal> qlist { get; set; }
    public List<decimal> splist { get; set; }
}

Контроллер

public ActionResult Billing()
{
    if (Session["UserId"] != null)
    {
        MBilling binddata = BillingService.getBindData();
        return View(binddata);
    }
    else
    {
        return this.RedirectToAction("Index", "Login");
    }
}

Вот часть cshtml

@model IEnumerable<Shop.Models.MBilling>
@{
    ViewBag.Title = "Billing";
}

<input style="border:none" list="browsers" name="browser">

<datalist id="browsers">
    ///Unable to ACCESS  Model.plist
    @foreach (var item in Model.plist)
    {
    }
</datalist>

Я могу получить объект модели с необходимыми данными из служебного файла, НО на странице cshtml отображается ошибка

CS1061: 'IEnumerable<MBilling>' не содержит определения для 'plist', и невозможно найти метод расширения 'plist', принимающий первый аргумент типа 'IEnumerable<MBilling>' (вы пропустили директиву using или ссылка на сборку?)

Заранее спасибо.

1 Ответ

0 голосов
/ 15 января 2019

Проблема:

Вы возвращаете модель как объект типа MBilling, но используете ее как IEnumerable<MBilling> в представлении.

Решение:

Вам не нужно IEnumerable<T> здесь, поскольку это не перечислимый . Так что удалите его и просто сделайте:

@model Shop.Models.MBilling
...