【发布时间】:2023-04-07 18:39:01
【问题描述】:
如何编辑表单中的重复字段(同一模型属性的多个值)?我首先使用带有 Razor 语法的 Visual Studio 2013 ASP.NET MVC 5 Entity Framework 代码。
我已经设法让创建功能正常工作,它成功地将数据添加到数据库中,但是我将如何将这些值带回编辑视图以编辑并重新保存回数据库?例如
我的视图看起来如何
输入说明 |输入金额
Description1TextBox |数量1文本框
Description2TextBox |金额2文本框
Description3TextBox | Amount3TextBox....
@for (int i = 0; i < 5; i++)
{
<div class="row">
@Html.TextBoxFor(m => Model.Options[i].Description, new { @class = "form-control col-sm-6" })
@Html.TextBoxFor(m => Model.Options[i].Amount, new { @class = "form-control col-sm-6" })
</div>
}
我的视图模型
一个数组
...
public string Description { get; set; }
public decimal? Amount { get; set; }
public Options[] Options { get; set; }
...
My Create Controller Post ActionResult
....
foreach (var optionsLoop in viewModel.Options)
{
if (optionsLoop.Description != null || optionsLoop.Amount != null)
{
var options = new Options()
{
Id = getId,
Description = optionsLoop.Description,
Amount = optionsLoop.Amount
};
db.Options.Add(options);
}
}
await db.SaveChangesAsync();
我需要进行哪些更改才能将值带回编辑视图然后进行编辑?我可以在 edit controller 操作中执行 Linq 查询以返回一个列表以在我的编辑视图中获取我想要的值,但是如何将这些值从 Linq 查询传递到我的视图中的循环?
...
//Values to bring back into my edit view
var getOptions = (from options in db.Options
where options.Id == currentUser.Id
select new { options}).Take(5).ToList();
...
【问题讨论】:
-
通过在模型的属性中分配它?如果您的问题是“How”,则需要显示更多相关代码。
-
我添加了更多代码,我需要知道如何将数组传递到视图中for循环中的文本框
-
var model = new FooModel { Options = getOptions }; return View(model)... -
您需要使用 GET 方法中的选项填充模型(请参阅@CodeCaster 评论)并在视图中使用
@for (int i = 0; i < Model.Options.Count; i++)并将属性更改为List<Options> Options -
谢谢你们,你们的解决方案结合起来效果很好!
标签: c# asp.net-mvc asp.net-mvc-4 razor asp.net-mvc-5