【发布时间】:2020-05-08 02:35:35
【问题描述】:
我是 asp.net core 的新手和初学者。我正在创建一个应用程序,该应用程序需要一个更新项目的页面,并且它是同一页面上的子项目。更新父数据很容易,但我对如何更新子项有点迷茫。
这是项目和子项目的简化模型:
public class Test
{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<TestChild> TestChildren { get; set; }
}
public class TestChild
{
public int ID { get;set; }
public string ChildName { get;set; }
public int TestID { get;set; }
public Test Test {get; set; }
}
我在 Razor 网页上使用与此类似的代码将其呈现给用户:
...
<input asp-for="Test.Name" class="form-control" />
@foreach (var child in Model.Test.TestChildren)
{
<input name="TC.@child.ID" value="@child.ChildName">
}
...
我的计划是使用子输入框中的名称字段来返回每个子记录的 ID,这与值字段一起可以让我更新正确的记录。这意味着当表单发布时,返回的数据可能类似于以下内容:
TC.4 = "Child 1"
TC.6 = "Child 2"
TC.9 = "Child 3"
.X 是相关子项的 ID,名称是它的新/更新名称。我真正想要的是以某种方式返回一个字典,其中键是 ID,值是名称。
但是,如果我在发布表单时使用上面的代码,我不知道将变量声明为什么类型,它会按照下面的方式传递给 onpost 函数:
public async Task<IactionResult> OnPostAsync(int id, ???????????)
{
...
What variable type should I use to map to the data above?
}
所以我的问题是:
- 这是更新子记录的最佳方式吗?
- 它们是链接子记录 ID 和值并将其传递回 onpost 函数的更简单/更好的方法吗?
- 如果我所拥有的是正确的,我必须像在 onpost 中那样声明变量吗?
感谢您的帮助
【问题讨论】:
标签: c# entity-framework asp.net-core razor