Значение внешнего ключа в Viewbag

Мы все еще заняты нашим проектом для школы, и у нас есть некоторые проблемы.

У нас есть членский класс и класс друзей. В FriendClass у нас есть memberID & FriendID в качестве составного первичного ключа. Таким образом, memberID ссылается на MemberID из класса участников, но FriendID также ссылается на этот memberID из класса участников, потому что друг должен быть участником.

Таким образом, по нашему мнению, мы можем выбрать из выпадающего списка, кто из участников может быть другом с другим участником, и хранить его.

Но если мы хотим отредактировать эту дружбу и хотим сменить друга члена или изменить оба имени. Мы не можем видеть текущего друга в выпадающем списке, хотя мы можем видеть участника, дружбу которого мы хотим изменить, в выпадающем списке.

Вот несколько скриншотов:

Первый снимок экрана - это индексное представление, которое дает нам идентификаторы участника и друга (который также является членом), поэтому имена таблиц: Person - Friend with

введите описание изображения здесь

Если мы теперь посмотрим на редактируемое представление, то увидим Person: Jan (PersonID = 1) и vriend встретились (с другом): Jeanine (PersonID2)

введите описание изображения здесь

Таким образом, мы уже можем получить имя члена one (Jan), используя viewbag и добавив его в представление:

 public ActionResult Edit(int id, int idTwo)
    {
        ViewBag.PersoonID = new SelectList(PersoonBLL.GetAll(), "PersoonID", "Naam");
      ViewBag.VriendID = new SelectList(PersoonBLL.GetAll(), PersoonBLL.GetById(idTwo).Naam.ToString());
        //ViewBag.VriendID = new SelectList(vriendschapBLL.GetAll(), "VriendID", "PersoonBLL.GetAll().Naam");

        Vriendschap vriendschap = vriendschapBLL.GetByTwoId(id, idTwo);
        if (vriendschap == null)
        {
            return HttpNotFound();
        }
        return View(vriendschap);
    }

Это код в представлении:

<div class="editor-label">
        <%: Html.LabelFor(model => model.PersoonID) %>
    </div>
    <div class="editor-field">
        <%: Html.DropDownList("PersoonID") %>
        <%: Html.ValidationMessageFor(model => model.PersoonID) %>
    </div>


            <div class="editor-label">
        <%: Html.LabelFor(model => model.VriendID) %>
    </div>
    <div class="editor-field">
        <%: Html.DropDownList("VriendID") %>
        <%: Html.ValidationMessageFor(model => model.VriendID) %>
    </div>

Первоначально у нас был индекс члена 2, который был правильным, но мы хотели иметь имя члена 2 вместо индекса. Это должно быть что-то в нашем контроллере с viewbag, но мы хотим, чтобы VriendID (friendID) был "Naam" (имя), который находится не в поле в нашей таблице vriendschap (дружба), а в классе memberTable/class

Итак, чтобы прояснить это: если вы видите код из viewbag, как мы сделали viewbag.PersoonID, мы хотим что-то похожее для VriendID (friendID), но нет никакого поля с именем "Naam" (name) в FriendsTable только 2 ключа, поле "Naam" происходит от PersoonTable (persontable), к которому относится первый пакет просмотра. Если мы сделали то же самое для viewbag.VriendId, мы получили два раза одно и то же имя.

Извините, если это очень сложно, это не легко объяснить на английском, если мы используем голландские имена. Заранее спасибо!!

1 ответ

Решение

Вы должны использовать:

ViewBag.VriendID = new SelectList(PersoonBLL.GetAll(), "PersoonID", "Naam",idTwo);

Это должно сделать это. idTwo возьмет следующий идентификатор из этого списка людей, которых вы на самом деле использовали.

Надеюсь, что это работает для вас.

Другие вопросы по тегам