Динамический список из формы - PullRequest
0 голосов
/ 11 июля 2019

У меня есть форма на моем сайте. Эта форма помещается в объект C # с помощью бритвенных форм.

Проблема в том, что у меня есть несколько предметов одного вида, поэтому у меня есть несколько Decision.Title и несколько Decision.description.

«Решение» - это объект списка, но проблема в том, что я не знаю, как сделать это динамически. Это означает, что я должен написать для каждого элемента формы:

Report.Decisions [0] .title Пример:

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

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Вы не должны публиковать списки данных.

Лучше всего вы можете разделить процесс, создать контроллер, который обрабатывает редактирование ваших Решений индивидуально, и создать контроллер, который обрабатывает отчет.В рамках вашей связи вы совершаете @ 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
    }
}

Я написал этот код из своей памяти, так что извините за любые ошибки.

Вы также можете создавать контроллеры / представления на основе ваших моделей, это сделает эти неполные страницы для вас.Добавьте новый контроллер, чем выберите шаблон, созданный структурой сущности.

0 голосов
/ 11 июля 2019

@ foreach будет там, где вы можете перебирать Report.Decisions, это .net mvc. Я думаю, что это должно быть то же самое в ядре MVC

...