我的网站上有一个表格。 将此表单以剃刀形式推送到C#对象。
问题是我有多个同类物品,所以我有多个Decision.Title和多个Decision.description。
“决策”是一个列表对象,但是问题是我不知道如何动态地使它。 这意味着我必须为每个表单项写信:
Report.Decisions [0]。标题 示例:
<div data-decision class="box box--less-padding">
<label class="form-item col-md-12">
<span>Titel </span>
<input asp-for="Report.Decisions[0].Title" type="text" name="name" value="" placeholder="Indtast titel" />
</label>
<label class="form-item col-md-12">
<span>Beslutning </span>
<textarea asp-for="Report.Decisions[0].Description"name="decision" value=" " placeholder="indtast beslutning"></textarea>
</label>
</div>
我的模特:
public List<Decision> Decisions { get; set; }
是否有一种方法不必为每个相同的项目写[0],[1]等?这样我就可以将其推入列表,列表会自动处理吗?。
对不起,如果这是一个愚蠢的问题,但是我仍然是C#的新人
谢谢!
答案 0 :(得分:0)
@foreach可以在那里循环Report.Decisions,这是.net mvc。我认为在核心MVC中应该是相同的
答案 1 :(得分:0)
您不应该回发数据列表。
最好可以划分流程,创建一个控制器来单独处理您的决策,并创建一个控制器来处理报告。在融洽的视图中,您可以对决策的编辑视图进行@ Html.Partial调用。像这样:
/Views/Raports/Index.cshtml:
@model myproject.models.Raport
@foreach (var decision in Model.Decisions)
{
<div>@Html.Partial("/Views/Decisions/Edit.cshtml", decision)</div>
}
<input type="button" onclick="document.getElementById('AddDecision').show();" value="Add" />
<div id="AddDecision" style="display: none;">
@Html.Partial("/Views/Decisions/Edit.cshtml", new Decision() { RaportId = Model.Id })
</div>
/Views/Decisions/Edit.cshtml:
@model myproject.models.Decision
@using (Html.BeginForm("Edit", "Decisions", new { id = Model.Id }))
{
<div>
@Html.HiddenFor(a => a.RaportId)
@Html.EditorFor(a => a.Name)
</div>
<div>
@Html.EditorFor(a => a.Description)
</div>
<div>
<input type="submit">
</div>
}
DecisionsController.cs:
[HttpPost]
public ActionResult Edit(int id, int raportid, string name, string description){
var item = db.Decisions.FirstOrDefault(a => a.Id == id);
if (item != null)
{
// edit it
}
else
{
// add it
}
}
我从内存中写了这段代码,对于任何错误,我们深表歉意。
您还可以根据您的模型生成控制器/视图,这将为您提供这些部分页面。添加一个新的控制器,而不是选择实体框架生成的模板。