【发布时间】:2016-07-18 12:56:31
【问题描述】:
这可能是一个棘手的问题,但它就是这样。
假设我有一个主视图,我们称之为MainView.cshtml。
现在,MainView.cshtml 有一个名为 MainViewModel.cs 的专用 ViewModel,其中包含一个变量 Model.ExampleItems,它是类 ExampleItem 的一个 IEnumerable。
现在假设我还有一个名为 _PartialView.cshtml 的局部视图,其 ViewModel 只是 ExampleItem。
好的,这就是我卡住的地方。 MainView.cshtml可以动态调用_PartialView.cshtml,这样用户就可以创建一个新的ExampleItem。如何将每个用户创建的 ExampleItem 保存到 MainViewModel 的 ExampleItems 的 IEnumerable?
这是一些示例代码
MainView.cshtml
@model Models.ViewModels.MainViewModel
@foreach (var item in Model.ExampleItems)
{
await Html.RenderPartialAsync("_PartialView", item);
}
<button id="AddExampleItem" type="button" class="btn btn-primary">Add Example Item</button>
_PartialView.cshtml
@model Models.ExampleItem
<input asp-for="VariableOne" />
<input asp-for="VariableTwo" />
<input asp-for="VariableThree" />
如何将 ^^^ 保存到原始 Model.ExampleItems 中?
【问题讨论】:
-
IEnumerable of ExampleItems主要用于查询.. 要保存,您可能需要List或数据库表。每次您的用户在您的_PartialView.cshtml中创建ExampleItem时,将其存储在数据库中。然后,每次获取 ExampleItems 时,只需要从 DB 表中查询即可。 -
你想在哪里做'添加项目'?客户端还是服务器端?
-
@Dandy 我忘了包括这部分。这一切都包装在一个表单中......所以基本上在用户添加了所有新的示例项目之后,他们可以点击提交,然后它将被保存到我们的外部数据库中。但是,当 ExampleItems 在 POST 上传递回控制器时,它是一个空列表
-
当然,如果这符合您的问题,您可以通过 ajax 异步发布您的部分视图数据。如果你愿意,我可以举个例子。
-
你能再显示一些代码吗?如何用户
adds all of the new ExcampleItems?您是否使用 ajax 或常规形式发布方法发布新添加的ExampleItems?
标签: c# asp.net-mvc asp.net-mvc-4 razor asp.net-mvc-5