Entity framework 如何在ASP.NETMVC2中添加、编辑和显示一对多关系实体?

Entity framework 如何在ASP.NETMVC2中添加、编辑和显示一对多关系实体?,entity-framework,asp.net-mvc-2,Entity Framework,Asp.net Mvc 2,我正在寻找符合MVC设计模式的最佳实践 我的实体具有以下关系。 tblPortal PortalId PrortalName tblPortalAlias别名PortalId HttpAlias 每个门户可以有多个门户 我想添加一个新的门户,然后添加相关的门户 我对如何构造视图以及如何向用户呈现视图感到困惑。我正在寻找一些关于如何实现这一点的示例代码 我的想法是首先呈现门户视图,让用户添加门户。然后单击门户列表视图上的编辑链接,并在门户编辑视图上让他们添加门户 如果是,编辑视图应该是什么样子 到

我正在寻找符合MVC设计模式的最佳实践

我的实体具有以下关系。 tblPortal PortalId PrortalName tblPortalAlias别名PortalId HttpAlias

每个门户可以有多个门户

我想添加一个新的门户,然后添加相关的门户

我对如何构造视图以及如何向用户呈现视图感到困惑。我正在寻找一些关于如何实现这一点的示例代码

我的想法是首先呈现门户视图,让用户添加门户。然后单击门户列表视图上的编辑链接,并在门户编辑视图上让他们添加门户

如果是,编辑视图应该是什么样子

到目前为止,我已经:

编辑视图

便携式

PortalFormViewModel


希望你已经在其他地方找到了答案,尽管基于在网上找到这方面的信息有多困难,这可能不太可能

一个MSDN博客链接到在第一段中有一个链接到本系列的前一篇


但似乎更好一些,并包含示例代码。

希望您在其他地方找到了答案,尽管基于在线查找有关此信息的困难程度,可能不太可能

一个MSDN博客链接到在第一段中有一个链接到本系列的前一篇


但似乎更好一些,并包含了示例代码。

Steve的淘汰帖子是编辑一对多关系的更好方法@Ryan感谢您提供的附加链接。我觉得这个例子看起来很熟悉,现在我知道为什么了。不幸的是他没有把老的和新的联系起来,但是。。。好发现@卡巴斯科夫,我想这可能是GitHub的问题。帧源是404,对我来说是404。但我也在Chrome的信息框中看到了这条信息。可能是半决赛。没有电子邮件链接,我也停止使用Twitter,所以我放弃了就这个问题联系史蒂夫。请看问题。史蒂夫的精彩帖子是编辑一对多关系的更好方式@Ryan感谢您提供的附加链接。我觉得这个例子看起来很熟悉,现在我知道为什么了。不幸的是他没有把老的和新的联系起来,但是。。。好发现@卡巴斯科夫,我想这可能是GitHub的问题。帧源是404,对我来说是404。但我也在Chrome的信息框中看到了这条信息。可能是半决赛。没有电子邮件链接,我也停止使用Twitter,所以我放弃了就这个问题联系史蒂夫。请看问题。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MyProject.Mvc.Models.PortalFormViewModel>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Edit
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Edit</h2>
<% Html.RenderPartial("PortalForm", Model); %>
<div>
    <%= Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyProject.Mvc.Models.PortalFormViewModel>" %>
<%= Html.ValidationSummary("Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
    <%= Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Fields</legend>

       <div class="editor-label">
            <%= Html.LabelFor(model => model.Portal.PortalId) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.Portal.PortalId) %>
            <%= Html.ValidationMessageFor(model => model.Portal.PortalId) %>
        </div>

        <div class="editor-label">
            <%= Html.LabelFor(model => model.Portal.PortalName) %>
        </div>
        <div class="editor-field">
            <%= Html.TextBoxFor(model => model.Portal.PortalName) %>
            <%= Html.ValidationMessageFor(model => model.Portal.PortalName) %>
        </div>            
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

<% } %>
Alias<br /><%-- This display is for debug --%>
<% foreach (var item in Model.PortalAlias) { %>

<%= item.HTTPAlias %><br />

<% } %>
public class PortalFormViewModel
{
    public Portal Portal { get; private set; }
    public IEnumerable<PortalAlias> PortalAlias { get; private set; }

    public PortalFormViewModel()
    {
        Portal = new Portal();
    }

    public PortalFormViewModel(Portal portal)
    {
        Portal = portal;
        PortalAlias = portal.PortalAlias;
    }
}