在 .net core mvc 中查看数据未进入模型
view data not come into model in .net core mvc
进入第二个局部视图的数据没有进入模型,但第一个局部视图数据进入。我希望两个部分视图数据都进入模型。请指导我如何操作,因为我是 .net core 的新手。
控制器
[HttpPost]
public ActionResult NewIndividualSearchCharacteristic(ABC.Core.Models.DTOs.Characteristic characteristics)
{
return PartialView("IndividualSearchCharacterisiticPartial", characteristics ?? new ABC.Core.Models.DTOs.Characteristic());
}
第一个局部视图有第二个局部视图
@model ABC.Core.Models.DTOs.Individual.IndividualSearch
@using (Html.BeginCollectionItem("IndividualSearches"))
{<div id="Characteristics" class="mb-3">
@if (Model?.Characteristics != null)
{
for (var i = 0; i < Model?.Characteristics.Count; i++)
{
<div class="form-group">
@{ Html.RenderPartial("IndividualSearchCharacterisiticPartial", Model.Characteristics[i], new ViewDataDictionary()); }
</div>
}
}
个人搜索Class
namespace ABC.Core.Models.DTOs.Individual
{
public List<Characteristic> Characteristics { get; set; } = new List<Characteristic>();
型号
namespace ABC.Core.Models.DTOs
{
public class Characteristic
{
public string Name { get; set; }
public string Value { get; set; }
}
}
第二部分
@model ABC.Core.Models.DTOs.Characteristic
@using (Html.BeginCollectionItem("Characteristics"))
{
<div id="characteristic-details" class="card">
<div class="form-horizontal">
<div class="card-block">
<div class="container">
<div class="row">
<div class="col-*-*">
@Html.LabelFor(m => m.Name, "Name", new { @class = "form-control-label" })
</div>
<div class="col">
@Html.TextBoxFor(m => m.Name, null, new { @class = "form-control" })
</div>
服务class
individualSearch.Characteristics = requestTestData.individualCharacteristics;
要通过两个相关的局部视图显示数据,您应该先确认哪个是第一个局部视图。
根据您的代码,IndividualSearchPartial
局部视图称为 IndividualSearchCharacterisiticPartial
局部视图,因此,您应该在 NewIndividualSearchCharacteristic 操作中首先调用 IndividualSearchPartial 局部视图,该操作将调用 IndividualSearchCharacterisiticPartial 局部视图自动.
并且在 NewIndividualSearchCharacteristic
操作中,您应该 return IndividualSearchCharacterisiticPartial
带有 IndividualSearch
模型数据的局部视图。
这是一个基于您的代码的示例:
测试视图:
@{
ViewData["Title"] = "Test";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>Test</h1>
<input id="Button1" type="button" value="button" />
<div id="aa"></div>
@section Scripts{
<script>
$("#Button1").click(function () {
$.ajax({
url: "/home/NewIndividualSearchCharacteristic",
type: "post",
success: function (data) {
$("#aa").html(data);
}
})
})
</script>
}
NewIndividualSearchCharacteristic 操作:
[HttpPost]
public ActionResult NewIndividualSearchCharacteristic()
{
IndividualSearch individualSearch = new IndividualSearch()
{
Characteristics = new List<Characteristic>() {
new Characteristic(){ Name="aa", Value="gfd"},
new Characteristic(){ Name="bb", Value="dsa"},
new Characteristic(){ Name="cc", Value="eqw"},
}
};
return PartialView("IndividualSearchPartial", individualSearch);
}
IndividualSearchPartial 局部视图:
@model IndividualSearch
@using (Html.BeginForm("IndividualSearches"))
{
<div id="Characteristics" class="mb-3">
@if (Model?.Characteristics != null)
{
for (var i = 0; i < Model?.Characteristics.Count; i++)
{
<div class="form-group">
@await Html.PartialAsync("IndividualSearchCharacterisiticPartial", Model.Characteristics[i])
</div>
}
}
</div>
}
IndividualSearchCharacterisiticPartial 局部视图:
@model Characteristic
@using (Html.BeginForm("Characteristics"))
{
<div id="characteristic-details" class="card">
<div class="form-horizontal">
<div class="card-block">
<div class="container">
<div class="row">
<div class="col-*-*">
@Html.LabelFor(m => m.Name, "Name", new { @class = "form-control-label" })
</div>
<div class="col">
@Html.TextBoxFor(m => m.Name, null, new { @class = "form-control" })
</div>
</div>
</div>
</div>
</div>
</div>
}
这里是测试代码:
进入第二个局部视图的数据没有进入模型,但第一个局部视图数据进入。我希望两个部分视图数据都进入模型。请指导我如何操作,因为我是 .net core 的新手。
控制器
[HttpPost]
public ActionResult NewIndividualSearchCharacteristic(ABC.Core.Models.DTOs.Characteristic characteristics)
{
return PartialView("IndividualSearchCharacterisiticPartial", characteristics ?? new ABC.Core.Models.DTOs.Characteristic());
}
第一个局部视图有第二个局部视图
@model ABC.Core.Models.DTOs.Individual.IndividualSearch
@using (Html.BeginCollectionItem("IndividualSearches"))
{<div id="Characteristics" class="mb-3">
@if (Model?.Characteristics != null)
{
for (var i = 0; i < Model?.Characteristics.Count; i++)
{
<div class="form-group">
@{ Html.RenderPartial("IndividualSearchCharacterisiticPartial", Model.Characteristics[i], new ViewDataDictionary()); }
</div>
}
}
个人搜索Class
namespace ABC.Core.Models.DTOs.Individual
{
public List<Characteristic> Characteristics { get; set; } = new List<Characteristic>();
型号
namespace ABC.Core.Models.DTOs
{
public class Characteristic
{
public string Name { get; set; }
public string Value { get; set; }
}
}
第二部分
@model ABC.Core.Models.DTOs.Characteristic
@using (Html.BeginCollectionItem("Characteristics"))
{
<div id="characteristic-details" class="card">
<div class="form-horizontal">
<div class="card-block">
<div class="container">
<div class="row">
<div class="col-*-*">
@Html.LabelFor(m => m.Name, "Name", new { @class = "form-control-label" })
</div>
<div class="col">
@Html.TextBoxFor(m => m.Name, null, new { @class = "form-control" })
</div>
服务class
individualSearch.Characteristics = requestTestData.individualCharacteristics;
要通过两个相关的局部视图显示数据,您应该先确认哪个是第一个局部视图。
根据您的代码,IndividualSearchPartial
局部视图称为 IndividualSearchCharacterisiticPartial
局部视图,因此,您应该在 NewIndividualSearchCharacteristic 操作中首先调用 IndividualSearchPartial 局部视图,该操作将调用 IndividualSearchCharacterisiticPartial 局部视图自动.
并且在 NewIndividualSearchCharacteristic
操作中,您应该 return IndividualSearchCharacterisiticPartial
带有 IndividualSearch
模型数据的局部视图。
这是一个基于您的代码的示例:
测试视图:
@{
ViewData["Title"] = "Test";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h1>Test</h1>
<input id="Button1" type="button" value="button" />
<div id="aa"></div>
@section Scripts{
<script>
$("#Button1").click(function () {
$.ajax({
url: "/home/NewIndividualSearchCharacteristic",
type: "post",
success: function (data) {
$("#aa").html(data);
}
})
})
</script>
}
NewIndividualSearchCharacteristic 操作:
[HttpPost]
public ActionResult NewIndividualSearchCharacteristic()
{
IndividualSearch individualSearch = new IndividualSearch()
{
Characteristics = new List<Characteristic>() {
new Characteristic(){ Name="aa", Value="gfd"},
new Characteristic(){ Name="bb", Value="dsa"},
new Characteristic(){ Name="cc", Value="eqw"},
}
};
return PartialView("IndividualSearchPartial", individualSearch);
}
IndividualSearchPartial 局部视图:
@model IndividualSearch
@using (Html.BeginForm("IndividualSearches"))
{
<div id="Characteristics" class="mb-3">
@if (Model?.Characteristics != null)
{
for (var i = 0; i < Model?.Characteristics.Count; i++)
{
<div class="form-group">
@await Html.PartialAsync("IndividualSearchCharacterisiticPartial", Model.Characteristics[i])
</div>
}
}
</div>
}
IndividualSearchCharacterisiticPartial 局部视图:
@model Characteristic
@using (Html.BeginForm("Characteristics"))
{
<div id="characteristic-details" class="card">
<div class="form-horizontal">
<div class="card-block">
<div class="container">
<div class="row">
<div class="col-*-*">
@Html.LabelFor(m => m.Name, "Name", new { @class = "form-control-label" })
</div>
<div class="col">
@Html.TextBoxFor(m => m.Name, null, new { @class = "form-control" })
</div>
</div>
</div>
</div>
</div>
</div>
}
这里是测试代码: