Как связать переменное количество элементов списка при передаче результата действия - PullRequest
0 голосов
/ 24 мая 2018

Все работает, но мне нужно связать много возможных "Regs".Bind(Prefix = "Regs[0]",... вплоть до Bind(Prefix = "Regs[n]",... некоторого натурального числа n.Так как же выполнить итерацию в этой ситуации, когда foreach должно быть внутри того, что передается в индекс ActionResult?

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Prefix = "Main",  Include = "AlterationForseenChanges,AlterationGrowthDecline,DescriptionEcozone,DescriptionEcoregion,DescriptionEcodistrict,DescriptionPreviousDB")] SESData sESData
        ,[Bind(Prefix = "Regs[0]", Include = "RegulationName,RegulationDescription,RegulationURL")] SESRegulationsList sESRegulationList) 
{
    if (ModelState.IsValid)
    {
        db.SESData.Add(sESData);
        db.SESRegulationList.Add(sESRegulationList);
        db.SaveChanges();  
        return RedirectToAction("Report", new { id = sESData.id});
    }

    return View(sESData);
}

Это базовая модель представления

public class SESDataViewModel
{
    public SESData Main { get; set; }
    public List<SESRegulationsList> Regs { get; set; }
}

Вид имеет только неопределенное количество редакторов, точно таких же, как эти

@Html.EditorFor(m => m.Regs[0].RegulationDescription)
@Html.EditorFor(m => m.Regs[1].RegulationDescription)...
@Html.EditorFor(m => m.Regs[n].RegulationDescription)

1 Ответ

0 голосов
/ 28 мая 2018

Спасибо мистеру Мюкке за это эффективное и простое решение

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Index(Models.SESDataViewModel sESData)
    {
        if (ModelState.IsValid)
        {
            db.SESData.Add(sESData.Main);
            foreach (var reg in sESData.Regs){
                db.SESRegulationList.Add(reg);
                db.SaveChanges();    
             }           
            return RedirectToAction("Report", new { id = sESData.Main.id});
        }

        return View(sESData);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...