首页 > 解决方案 > 如何为导航属性创建 MVC 视图(一对多、多对多)

问题描述

我有两个 ASP.NET MVC EF 实体共享一个关联:

在此处输入图像描述

当我编辑或创建 时User,我希望能够附加一个或多个UserRoles。所以,我的User Create观点是这样的:

@model MyModels.UserViewModel
@{ ViewBag.Title = "Create"; }
@using (Html.BeginForm())
{
    <fieldset>
        <legend>User</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Username)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Username)
            @Html.ValidationMessageFor(model => model.Username)
        </div>

        <!-- how to create an editor to add/remove roles -->
        <div class="editor-label">
            @Html.LabelFor(model => model.UserRoles)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.UserRoles)
            @Html.ValidationMessageFor(model => model.UserRoles)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

由于Model.UserRoles最初是空的,因此我在这一行中什么也得不到@Html.EditorFor(model => model.UserRoles)。我尝试添加一个下拉列表,我可以在其中使用 JavaScript 选择现有角色(我猜是作为部分视图检索的?),但我不知道如何将选定的角色附加到fieldset它以便提交。

这通常在 ASP.NET 中是如何完成的?我已经搜索了一段时间,但找不到合适的解决方案。

澄清一下,我不明白的是如何向客户端添加/附加新角色,以便提交按钮实际上将其发送到UserRoles列表中。

(编辑)好的,我发现了这个: How to add an item to a list in a ViewModel using Razor and .NET Core。它说我应该获取一个部分视图,该视图被写入看起来像将由@Html.EditorFor(使用下一个数组索引)生成的输入,然后使用 JavaScript 附加它。

这看起来很奇怪,这真的是正确的方法吗?

标签: asp.net-mvcentity-frameworkmany-to-manycrudnavigation-properties

解决方案


推荐阅读