假设一个Parent
模型与几个Child
模型具有一对多关系。我想从Parent
的详细信息页面链接到Child
创建表单。然后应该在此处创建的Child
实体属于Parent
。
我了解如何“工作上下文”以便将Child
与Parent
连接起来。我的问题是要从Parent
视图到Parent
创建视图获得Child
引用。
我找到了一些看起来很“低级”的解决方案(例如,在TempData
中设置父ID)。我认为有一种更惯用的(甚至是类型安全的)方法来实现这一点。
如果这有所作为,我正在Areas中使用剃刀模板。
答案 0 :(得分:1)
创建一个数据结构,例如CreateChildViewModel
public class CreateChildViewModel
{
public int ParentId {get;set;}
//... rest of the props
}
现在,您可以导航到CreateParentChild操作,并使用标签助手<a asp-controller="YourController" asp-action="CreateParentChild" asp-route-parentId="YourParentId"></a>
[HttpGet]
public IActionResult CreateParentChild(int parentId) =>
View(new CreateChildViewModel { ParentId = parentId });
然后在您的视图中可以将此ID存储在隐藏的输入字段中
@model YourNamespace.CreateChildViewModel
<input type="hidden" asp-for="ParentId" />
一旦将其发布回以创建孩子,您将在表单中获得ID。
[HttpPost]
public IActionResult CreateParentChild(CreateChildViewModel vm) {
//do your stuff
}
根据经验,我想永远不要使用TempData