Возврат данных в представление с моделью, которая ссылается на другие модели. - PullRequest
0 голосов
/ 09 ноября 2018

Итак, у меня есть моя модель

public class AgencyAll
{
    public Agency Agency { get; set; }
    public AgencySector AgencySector { get; set; }
    public AgencyExpertise AgencyExpertise { get; set; }
}

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

Пример - модель агентства

public partial class Agency
{
    public int id { get; set; }
    public System.DateTime created { get; set; }
    public int createdby { get; set; }
    public string createdbytype { get; set; }
    public System.DateTime lastupdated { get; set; }
    public int lastupdatedby { get; set; }
    public string lastupdatedbytype { get; set; }
    public bool deleted { get; set; }
    public string name { get; set; }
    public string address { get; set; }
}

AgencySector и AgencyExpertise содержат только идентификатор агентства и другой идентификатор (сектор или специализацию), так как это отношение многие ко многим

Часть моего взгляда

@model AgencyAll
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12">
    <div class="form-group">
        Sector:
        @Html.DropDownListFor(model => model.AgencySector.sectorid, (SelectList) ViewBag.SectorList, new {@class = "form-control"})
    </div>
</div>
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12">
    <div class="form-group">
        Specialisation:
        @Html.DropDownListFor(model => model.AgencyExpertise.expertiseid, (SelectList) ViewBag.SpecialismList, new {@class = "form-control"})
    </div>
</div>

Как видите, я могу назвать разные модели в порядке

Моя проблема возникает здесь

public ActionResult ViewData(int id)
{
    ViewBag.CountyList = new SelectList(GetCountyList(), "Value", "Text");
    ViewBag.SectorList = new SelectList(GetSectorList(), "Value", "Text");
    ViewBag.SpecialismList = new SelectList(GetSpecialisationList(), "Value", "Text");

    return View(_db.Agencies.FirstOrDefault(x => x.id == id));
}

в частности, эта строка; return View(_db.Agencies.FirstOrDefault(x => x.id == id));

Я пытаюсь вернуть данные агентства для URL ViewData / (id), однако, поскольку моделью для представления является AgencyAll, он не может назначить набор данных для модели, поскольку модель не ссылается на таблицу, она ссылается на несколько моделей, которые ссылаются на таблицы. В операторе возврата ожидается, что у представления будет модель Агентства, а не Агентства.

Я не могу понять, что мне нужно заменить на return View(_db.Agencies.FirstOrDefault(x => x.id == id));, чтобы передать данные из класса в модель, которая имеет модель таблицы, чтобы показать данные,

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 ноября 2018

Вы должны предоставить ожидаемую модель для вашего представления, которая равна AgencyAll . В данный момент вы предоставляете Агентство объект.

Измените свой код на что-то вроде этого:

    public ActionResult ViewData(int id)
    {
        ViewBag.CountyList = new SelectList(GetCountyList(), "Value", "Text");
        ViewBag.SectorList = new SelectList(GetSectorList(), "Value", "Text");
        ViewBag.SpecialismList = new SelectList(GetSpecialisationList(), "Value", "Text");

        var viewModel = new AgencyAll {
            Agency = _db.Agencies.FirstOrDefault(x => x.id == id),
            AgencySector = _db.AgencySectors.FirstOrDefault(),
            AgencyExpertise = _db.AgencyExpertises.FirstOrDefatul()
        }

        return View(viewModel);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...