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

这里是测试代码: