在ASP.NET MVC 5中提交表单时保留子对象

我想知道提交表单后如何保留子对象。

这是我的控制器代码

git rebase

当我使用 [HttpPost] public actionResult FormListPackage(ListPackagesViewModel lpv) { if (!ModelState.IsValid) { return View("ListPackage",lpv); } ModelState.Clear(); if (lpv.HiddenClickButton == "btnOkRechIndirect") { lpv.Agence = "ag1"; lpv.NumCommande = "12355"; lpv.CodeBarreRech = string.Empty; } else if (lpv.HiddenClickButton == "btnOkSurbrillance") { lpv.CodeBarreSurbrillance = string.Empty; lpv.LigneCommande = "50"; } else if (lpv.HiddenClickButton == "btnmiseSurbrillance") { //TODO treat order } else if (lpv.HiddenClickButton == "btnRechercher") { //Get order lpv.Order.Agency = "ag1"; lpv.Order.OrderNumber = "12355"; lpv.Order.Customer = "client1"; lpv.Order.Customer2 = "client2"; lpv.Order.DeliveryDate = DateTime.Now; lpv.Order.LoadingPlan = 33; lpv.Order.IsSav = true; lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "12345",ParentPackage = "",OrderLine = 30,ArtcileCode = "art1",Designation = "des1",Color = "" }); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "19837",ArtcileCode = "art2",Designation = "des2",Color = "RED",Statut=0 }); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "13908",ParentPackage = "12345",OrderLine = 50,ArtcileCode = "art3",Designation = "des3",Color = "BLUE",Circuit="TEST" }); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "14567",OrderLine = 40,ArtcileCode = "art4",Designation = "des4",Color = "YELLOW",}); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "15346",ArtcileCode = "art5",Designation = "des5",Color = "BROWN",Statut = 999 }); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "16784",ArtcileCode = "art6",Designation = "des6",Color = "",Statut = 0 }); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "19834",OrderLine = 0,ArtcileCode = "art7",Designation = "des7",Color = "GREEN",}); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "18273",ArtcileCode = "art8",Designation = "des8",Color = "WHITE",CancellationDate = DateTime.Now }); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "12567",OrderLine = 70,ArtcileCode = "art9",Designation = "des9",Statut = 0,Circuit = "TEST3" }); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "13425",ArtcileCode = "art10",Designation = "deS10",}); lpv.Order.Packages.Add(new PackageModel() { CodeBarre = "17894",ParentPackage = "12567",OrderLine = 100,ArtcileCode = "art11",Designation = "des11",Circuit = "TEST2",Statut= null }); lpv.Order.Packages.ForEach(h => h.action = "SetNoFab"); } List<OrderModel> lstOrder = null; ErrorModel error = null; return View("ListPackages",lpv); } 按钮提交表单时,我将数据放在对象btnRechercher(该对象作为子对象=>订单)上。

当我使用ListPackagesViewModel按钮提交表单时,我想将数据保留在btnOkRechIndirect上。我丢失了子对象Order。

可以保留吗?

这是cshtml的代码:

ListPackagesViewModel

这是cshtml的代码

@using (html.beginform("FormListPackage","NoFab"))
{
    @Html.HiddenFor(m => m.HiddenClickButton)

    <div><h2>Recherche des colis à annuler </h2></div><br /><br />
    <div>
        <table class="table">
            <tr>
                <td>
                    <table>
                        <thead>Recherche direct</thead>
                        <tr>
                            <td>
                                @Html.LabelFor(m => m.Agence)@Html.Raw("&nbsp") @Html.Raw("&nbsp")
                            </td>
                            <td>
                                @Html.TextBoxFor(m => m.Agence,new { @maxlength = "3" }) @Html.Raw("&nbsp")
                            </td>
                        </tr>
                        <tr>
                            <td>
                                @Html.LabelFor(m => m.NumCommande)@Html.Raw("&nbsp") @Html.Raw("&nbsp")
                            </td>
                            <td>
                                @Html.TextBoxFor(m => m.NumCommande,new { @maxlength = "9" })@Html.Raw("&nbsp")
                            </td>
                        </tr>
                    </table>
                </td>
                <td>@Html.Raw("&nbsp") </td>
                <td>
                    <table>
                        <thead>Recherche Agence/Commande</thead>
                        <tr>
                            <td>
                                @Html.LabelFor(m => m.CodeBarreRech)@Html.Raw("&nbsp") @Html.Raw("&nbsp")
                                @Html.TextBoxFor(m => m.CodeBarreRech,new { @maxlength = "10" })@Html.Raw("&nbsp")@Html.Raw("&nbsp")
                                <button type="submit" id="btnOkRechIndirect">ok</button>
                                @Html.Validationmessage("CustomValidationRechOK")
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </div>
    <div id="divMiseEnSurbrillance">
        <table class="table">
            <tr>
                <td>
                    <table>
                        <thead>Mise en surbrillance</thead>
                        <tr>
                            <td>
                                @Html.LabelFor(m => m.LigneCommande)@Html.Raw("&nbsp") @Html.Raw("&nbsp")
                            </td>
                            <td>
                                @Html.TextBoxFor(m => m.LigneCommande,new { @maxlength = "5" })@Html.Raw("&nbsp")
                                @Html.Validationmessage("CustomValidationmiseSurbrillance")
                                <button type="submit" id="btnmiseSurbrillance">Mise en surbrillance</button>
                            </td>
                        </tr>
                    </table>
                </td>
                <td>@Html.Raw("&nbsp") </td>
                <td>
                    <table>
                        <thead>Recherche LigneCommande</thead>
                        <tr>
                            <td>
                                @Html.LabelFor(m => m.CodeBarreRech)@Html.Raw("&nbsp") @Html.Raw("&nbsp")
                            </td>
                            <td>
                                @Html.TextBoxFor(m => m.CodeBarreRech,new { @maxlength = "10" })@Html.Raw("&nbsp")@Html.Raw("&nbsp")
                                <button type="submit" id="btnOkSurbrillance">ok</button>
                                @Html.Validationmessage("CustomValidationRechOK")
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </div>

    <button type="submit" id="btnRechercher">Rechercher</button>
    <br />
    <br />
    if (Model.HiddenClickButton == "btnRechercher")
    {
        if (Model.Order.Packages.Count > 0)
        {

            var grid = new WebGrid(
                Model.Order.Packages,rowsPerPage: 15,defaultsort: ""
                );


            @grid.GetHtml(
                             tableStyle: "webgrid-table",headerStyle: "webgrid-header",footerStyle: "webgrid-footer",alternatingRowStyle: "webgrid-alternating-row",rowStyle: "webgrid-row-style",fillEmptyRows: false,mode: WebGridPagerModes.All,columns:
                                 grid.Columns
                                 (
                                    //grid.Column("test",format: (item) => { if (!item.IsLocked) return "<input type='checkbox' value='@item.IsChecked' /></text>"; else return ""; },canSort: false,style: "checkBox"),grid.Column("TEST",format: @<text>  <input type="checkbox" value="@item.IsChecked" /> </text>,format:(item) =>
                                     {
                                         if (item.IsLocked)
                                             return "";
                                         else
                                             return Html.Raw(string.Format("<input type=\"checkbox\" value=\"{0}\" />",@item.IsChecked));
                                     },grid.Column("Agency",format: @<text>  @Model.Order.Agency </text>,style: "Btn"),grid.Column("Commande",format: @<text>  @Model.Order.OrderNumber </text>,grid.Column("CodeBarre",header: "CAB",style: "ArtcileCode"),grid.Column("ParentPackage",header: "Maitre",grid.Column("OrderLine",header: "Ligne",grid.Column("ArtcileCode",header: "ArtcileCode",grid.Column("Designation",header: "Designation",grid.Column("Color",header: "Color",grid.Column("Statut",header: "Statut",grid.Column(format: (item) => item.CancellationDate == null ? string.Empty : String.Format("{0:dd/MM/yyyy HH:mm:ss}",item.CancellationDate),header: "CancellationDate",style: "ArtcileCode"
                                                                                                                                                                         ),grid.Column("SaisieAdv",header: "SaisieAdv",grid.Column("Circuit",header: "Circuit",grid.Column("CommercialCategory",header: "CommercialCategory",grid.Column("IsLocked",header: "IsLocked",grid.Column("action",header: "action",style: "ArtcileCode")
                                                                                                                                                         )
                                                                                                                                                     )
        }
        else
        {
            <div style="width:30%;">
                <h3>Aucune ligne renvoyé</h3>
            </div>
        }
    }
}
bangegua 回答:在ASP.NET MVC 5中提交表单时保留子对象

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3122454.html

大家都在问