Viewbag中的外键值

时间:2014-02-12 09:51:35

标签: asp.net-mvc foreign-keys viewbag

我们仍然忙于我们的学校项目,我们遇到了一些问题。

我们有一个成员类和一个朋友类 在朋友类中,我们有memberID& FriendID作为复合主键。 所以memberID引用了memberclass中的MemberID,但FriendID也引用了memberclass中的这个memberID,因为一个Friend必须是一个成员。

因此,在我们的观点中,我们可以从下拉列表中选择成员可以与另一个成员和存储的朋友。

但是,如果我们想要编辑这种友谊,并希望更改成员的朋友或更改这两个名称。我们无法在下拉列表中看到当前的朋友,尽管我们可以在下拉列表中看到我们想要更改的成员。

这里有一些截图:

第一个屏幕截图是索引视图,它为我们提供了会员和朋友(他们也是会员)的ID 所以表名是:人 - 朋友

enter image description here

如果我们现在看编辑视图,我们应该看到Person:Jan(PersonID = 1)和vriend遇到(朋友):Jeanine(PersonID2)

enter image description here

因此我们已经可以通过使用视图包并将其添加到视图来获取成员1(Jan)的名称:

 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)但在friendshipTable中只有2个键没有名为“Naam”(name)的字段,“Naam”字段来自第一个viewbag所指的PersoonTable(persontable)。如果我们为viewbag.VriendId做了同样的事情,我们得到两次相同的名字。

对不起,如果这很复杂,如果我们使用荷兰名字,用英语解释这个并不容易。 先感谢您!!

1 个答案:

答案 0 :(得分:1)

你应该使用:

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

这应该这样做。 idTwo将从您实际使用的人员列表中获取下一个Id。

希望这适合你。