asp.net-mvc - 如何为导航属性创建 MVC 视图(一对多、多对多)
问题描述
我有两个 ASP.NET MVC EF 实体共享一个关联:
当我编辑或创建 时User
,我希望能够附加一个或多个UserRole
s。所以,我的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 附加它。
这看起来很奇怪,这真的是正确的方法吗?
解决方案
推荐阅读
- stripe-payments - 如何处理向客户收取款项的SaaS经销商?
- c++ - 使用 libcxx 和 std::atomic,如何通过默认构造函数清除 std::atomic_flag?
- reactjs - 使用 redux 和 webpack 反应 SSR 优化后 Gtmetrix 分数不会增加
- javascript - 从 Python 脚本获取输入到 Node.js Telegram Bot
- python-3.x - tf.tape.gradient() 返回无
- sql - 概括 CASE 语句(结果列的动态名称?)
- python - 从 csv 数据创建树结构以用于折叠菜单
- c++ - 辅助类型别名与继承
- python - 使用 selenium 获取 img 标签的 alt 属性值
- python-3.x - python38.dll 在 windows 10 中被自动删除