表单中的动态列表



我的网站上有一个表格。此窗体被推送到具有 razor 窗体的 C# 对象。

问题是我有多个相同类型的项目,所以我有多个 Decision.Title 和多个 Decision.description。

"决策"是一个列表对象,但问题是我不知道如何动态地制作它。这意味着我必须为每个表单项编写:

报告决策[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# 的新手

提前感谢!

@foreach在那里你可以循环浏览Report.Decisions,这是.net mvc。我认为在核心 mvc 中应该是一样的

不应回发数据列表。

最好的情况是划分流程,创建一个单独处理决策编辑的控制器,并创建一个处理报告的控制器。在融洽关系的视图中,您可以对决策的编辑视图进行@Html.部分调用。像这样:

/

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>
}

决策控制器.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
    }
}

根据我的记忆编写了这段代码,对于任何错误,我深表歉意。

您还可以根据您的模型生成控制器/视图,这将为您制作这些部分页面。添加新控制器,而不是选择实体框架生成的模板。

最新更新