Asp.net mvc ASP.NET Core-将填充模型发回
我正在开发一个web应用程序,它基本上允许您在体育联盟内管理陪审团职责。其中一个页面用于将人员分配到预定义面板中的多个预定义“职责”。该页面显示可用面板的侧面(一行3个)。然后,可以选择要修改的配电盘 从技术上讲,在页面中,我为每个可用面板加载一个局部视图。选择要编辑的面板时,将重新加载页面,并在可编辑的局部视图中重新加载所选面板 edit.cshtmlAsp.net mvc ASP.NET Core-将填充模型发回,asp.net-mvc,asp.net-core,Asp.net Mvc,Asp.net Core,我正在开发一个web应用程序,它基本上允许您在体育联盟内管理陪审团职责。其中一个页面用于将人员分配到预定义面板中的多个预定义“职责”。该页面显示可用面板的侧面(一行3个)。然后,可以选择要修改的配电盘 从技术上讲,在页面中,我为每个可用面板加载一个局部视图。选择要编辑的面板时,将重新加载页面,并在可编辑的局部视图中重新加载所选面板 edit.cshtml @model Models.Database.Models.PanelOverviewModel; @{ ViewBag.Title
@model Models.Database.Models.PanelOverviewModel;
@{
ViewBag.Title = "Samenstelling van de panels";
Layout = "_Layout";
}
<h2>Samenstelling van de panels.</h2>
<div class="container-fluid mb-3">
<div class="container bg-light">
@if (Model.PanelMatrix != null && Model.PanelMatrix.Count > 0)
{
@for (var index = 0; index < Model.PanelMatrix.Keys.Count; index++)
{
<div class="line"></div>
@if (Model.PanelMatrix.ContainsKey(index))
{
var panelNames = Model.PanelMatrix[index];
<div class="row mb-3">
@foreach (var panel in panelNames)
{
var currentPanel = Model.PanelComposition[panel];
@if (currentPanel.PanelName == Model.SelectedPanel)
{
<div class="col">
@await Html.PartialAsync("JuryOpstelling/_EditPanelView", currentPanel)
</div>
}
else
{
<div class="col">
@await Html.PartialAsync("JuryOpstelling/_ShowPanelView", currentPanel)
</div>
}
}
</div>
}
<div class="line"></div>
}
}
else
{
<div class="line"></div>
<p>Geen panels gevonden.</p>
<div class="line"></div>
}
</div>
</div>
@model Models.Database.Models.PanelModel
<div class="border-right">
<form asp-action="SavePanel" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" id="currentPanel" name="currentPanel" asp-for="@Model.PanelName" />
<input type="hidden" id="wedstrijdSessie" name="wedstrijdSessie" asp-for="@Model.WedstrijdSessie" />
<input type="hidden" id="currentMembers" name="currentMembers" asp-for="@Model.PanelComposition" />
<div class="form-group">
<div class="row">
<div class="col-md-6 text-center d-flex align-items-center justify-content-center">
<input type="submit" value="Edit" class="btn btn-outline-info"/>
</div>
<div class="col-md-6 text-center d-flex align-items-center justify-content-center">
<input type="button" value="Overview" class="btn btn-outline-info" onclick= "location.href = '@Url.Action("Index", "JuryOpsteller", new { id = Model.WedstrijdSessie })'"/>
</div>
</div>
</div>
<h3>@Model.PanelName</h3>
<div class="container-fluid mb-3">
<div class="container bg-light">
@foreach (var panel in Model.PanelComposition)
{
<hr style="border-style: dotted;"/>
<div class="row formgroup align-items-center">
<div class="col-4">
<label class="control-label"><p class="font-weight-bold">@panel.Functie:</p></label>
</div>
<div class="col-8">
<select asp-for="@panel.FK_Jury"
asp-items="Model.JuryMembers"
class="form-control text-center d-flex align-items-center justify-content-center"
id ="currentSelectedJuryMemmber"
name="currentSelectedJuryMemmber"
value="@panel.JuryName"></select>
<span asp-validation-for="@panel.JuryName" class="text-danger"></span>
</div>
</div>
}
</div>
</div>
</form>
</div>
@model Models.Database.Models.PanelOverviewModel;
@{
ViewBag.Title=“Samenstelling van de panels”;
布局=“_布局”;
}
萨门斯·范德小组。
@如果(Model.PanelMatrix!=null&&Model.PanelMatrix.Count>0)
{
@对于(var index=0;index
}
\u EditPanelView.cshtml
@model Models.Database.Models.PanelOverviewModel;
@{
ViewBag.Title = "Samenstelling van de panels";
Layout = "_Layout";
}
<h2>Samenstelling van de panels.</h2>
<div class="container-fluid mb-3">
<div class="container bg-light">
@if (Model.PanelMatrix != null && Model.PanelMatrix.Count > 0)
{
@for (var index = 0; index < Model.PanelMatrix.Keys.Count; index++)
{
<div class="line"></div>
@if (Model.PanelMatrix.ContainsKey(index))
{
var panelNames = Model.PanelMatrix[index];
<div class="row mb-3">
@foreach (var panel in panelNames)
{
var currentPanel = Model.PanelComposition[panel];
@if (currentPanel.PanelName == Model.SelectedPanel)
{
<div class="col">
@await Html.PartialAsync("JuryOpstelling/_EditPanelView", currentPanel)
</div>
}
else
{
<div class="col">
@await Html.PartialAsync("JuryOpstelling/_ShowPanelView", currentPanel)
</div>
}
}
</div>
}
<div class="line"></div>
}
}
else
{
<div class="line"></div>
<p>Geen panels gevonden.</p>
<div class="line"></div>
}
</div>
</div>
@model Models.Database.Models.PanelModel
<div class="border-right">
<form asp-action="SavePanel" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" id="currentPanel" name="currentPanel" asp-for="@Model.PanelName" />
<input type="hidden" id="wedstrijdSessie" name="wedstrijdSessie" asp-for="@Model.WedstrijdSessie" />
<input type="hidden" id="currentMembers" name="currentMembers" asp-for="@Model.PanelComposition" />
<div class="form-group">
<div class="row">
<div class="col-md-6 text-center d-flex align-items-center justify-content-center">
<input type="submit" value="Edit" class="btn btn-outline-info"/>
</div>
<div class="col-md-6 text-center d-flex align-items-center justify-content-center">
<input type="button" value="Overview" class="btn btn-outline-info" onclick= "location.href = '@Url.Action("Index", "JuryOpsteller", new { id = Model.WedstrijdSessie })'"/>
</div>
</div>
</div>
<h3>@Model.PanelName</h3>
<div class="container-fluid mb-3">
<div class="container bg-light">
@foreach (var panel in Model.PanelComposition)
{
<hr style="border-style: dotted;"/>
<div class="row formgroup align-items-center">
<div class="col-4">
<label class="control-label"><p class="font-weight-bold">@panel.Functie:</p></label>
</div>
<div class="col-8">
<select asp-for="@panel.FK_Jury"
asp-items="Model.JuryMembers"
class="form-control text-center d-flex align-items-center justify-content-center"
id ="currentSelectedJuryMemmber"
name="currentSelectedJuryMemmber"
value="@panel.JuryName"></select>
<span asp-validation-for="@panel.JuryName" class="text-danger"></span>
</div>
</div>
}
</div>
</div>
</form>
</div>
@model.Database.Models.PanelModel
@Model.PanelName
@foreach(Model.PanelComposition中的var面板)
{
@panel.Functie:
}
\u EditPanelView.cshtml为每个职责显示一个组合框,其中包含可用陪审团成员的列表。最后,我们可以单击“编辑”,然后更改列表。但是无论我做什么,PanelComposition属性总是返回为null,而它应该包含Jurymember数据。我该如何解决这个问题
编辑
根据我得到的答案,我重新编写了\u EditPanelView.cshtml中的代码,如下所示:
<form asp-action="SavePanel" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" id="currentPanel" name="currentPanel" asp-for="@Model.PanelName" />
<input type="hidden" id="wedstrijdSessie" name="wedstrijdSessie" asp-for="@Model.WedstrijdSessie" />
<div class="form-group">
<div class="row">
<div class="col-md-6 text-center d-flex align-items-center justify-content-center">
<input type="submit" value="Aanpassen" class="btn btn-outline-info" />
</div>
<div class="col-md-6 text-center d-flex align-items-center justify-content-center">
<input type="button" value="Terug naar het overzicht" class="btn btn-outline-info" onclick="location.href = '@Url.Action("Index", "JuryOpsteller", new { id = Model.WedstrijdSessie })'" />
</div>
</div>
</div>
<h3>@Model.PanelName</h3>
<div class="container-fluid mb-3">
<div class="container bg-light">
@for (var i = 0; i < Model.PanelComposition.Count; i++)
{
<hr style="border-style: dotted;" />
<div class="row formgroup align-items-center">
<div class="col-4">
<label class="control-label"><p class="font-weight-bold">@Model.PanelComposition[i].Functie:</p></label>
</div>
<div class="col-8">
<select asp-items="@Model.JuryMembers"
class="form-control text-center d-flex align-items-center justify-content-center"
name="@Model.PanelComposition[i].JuryName"
value="@Model.PanelComposition[i].FK_Jury">
</select>
<span asp-validation-for="@Model.PanelComposition[i].JuryName" class="text-danger"></span>
</div>
</div>
}
</div>
</div>
</form>
@Model.PanelName
@对于(var i=0;i
@Model.PanelComposition[i]。函数:
}
这解决了一个问题,正如海报所示,这允许映射模型,并允许HttpPost操作加载数据
但是,正如您在下面的屏幕截图中看到的,我仍然存在一些问题:
正如您所看到的,组合框都显示了相同的选项,第一个加载的记录,正如您在生成的HTML中所看到的:
看起来数据进入了HTML,但是标记仍然存在一些问题
这里有人有主意吗?我已将加载到所用模型中的数据添加为(万岁的NewtonSoft)。根据此代码,
PanelComposition
是一个集合。在表单中,其名称应更改为集合类型
删除
更改\u EditPanelView.cshtml中的代码(foreach)
在标记
中,添加name=“PanelComposition[@i].FK\u Jury”
(变量i=0;i
根据我收到的回复,我通过结合一些回复和一点逻辑思考,成功地让它工作起来 当前代码允许我正确生成组合框,并在帖子中读取更改的值:
<form asp-action="SavePanel" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" id="currentPanel" name="currentPanel" asp-for="@Model.PanelName" />
<input type="hidden" id="wedstrijdSessie" name="wedstrijdSessie" asp-for="@Model.WedstrijdSessie" />
<div class="form-group">
<div class="row">
<div class="col-md-6 text-center d-flex align-items-center justify-content-center">
<input type="submit" value="Aanpassen" class="btn btn-outline-info" />
</div>
<div class="col-md-6 text-center d-flex align-items-center justify-content-center">
<input type="button" value="Terug naar het overzicht" class="btn btn-outline-info" onclick="location.href = '@Url.Action("Index", "JuryOpsteller", new { id = Model.WedstrijdSessie })'" />
</div>
</div>
</div>
<h3>@Model.PanelName</h3>
<div class="container-fluid mb-3">
<div class="container bg-light">
@for(var i = 0; i < Model.PanelComposition.Count; i++)
{
int juryCount = i;
<hr style="border-style: dotted;" />
<div class="row formgroup align-items-center">
<div class="col-4">
<label class="control-label"><p class="font-weight-bold">@Model.PanelComposition[i].Functie:</p></label>
</div>
<div class="col-8">
<select asp-for= "PanelComposition[juryCount].FK_Jury"
asp-items = "Model.JuryMembers"
class="form-control text-center d-flex align-items-center justify-content-center"
name="PanelComposition[@juryCount].FK_Jury"
value="@Model.PanelComposition[juryCount].FK_Jury.ToString()">
</select>
<span asp-validation-for="@Model.PanelComposition[i].JuryName" class="text-danger"></span>
</div>
</div>
}
</div>
</div>
</form>
有了这个,我可以继续,尽管我想知道一件事。正如你所看到的,我在post action中获得的数据只包含一个FK\u Jury的值。有没有办法也填充Functie的值?你能显示模型
PanelOverviewModel
?公共类PanelOverviewModel吗{#region Properties public int WedstrijdSessione{get;set;}公共字典面板组合{get;set;}公共字典面板矩阵;公共字符串SelectedPanel{get;set;}#endregion}Thx,它可以工作!但是为什么它现在可以工作?也许这里的任何人都可以分享一些关于它的信息?因为集合的映射需要顺序值来映射。看起来我有点太快了。请参阅我的d
{
"WedstrijdSessie": 5828,
"PanelName": null,
"ClubName": null,
"PanelComposition": [
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 156,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 66,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 143,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 121,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 110,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 129,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 46,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 64,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 64,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 64,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
},
{
"FK_WedstrijdSessie": null,
"SK_JuryOpgave": null,
"FK_Jury": 88,
"Omschrijving": null,
"Functie": null,
"Naam": null,
"Voornaam": null,
"JuryNiveau": null,
"JuryNiveauNr": null,
"SK_Club": null,
"Club": null,
"Vlg_PositieToegekend": null,
"JuryName": " "
}
],
"JuryMembers": null
}