我想知道提交表单后如何保留子对象。
这是我的控制器代码
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(" ") @Html.Raw(" ")
</td>
<td>
@Html.TextBoxFor(m => m.Agence,new { @maxlength = "3" }) @Html.Raw(" ")
</td>
</tr>
<tr>
<td>
@Html.LabelFor(m => m.NumCommande)@Html.Raw(" ") @Html.Raw(" ")
</td>
<td>
@Html.TextBoxFor(m => m.NumCommande,new { @maxlength = "9" })@Html.Raw(" ")
</td>
</tr>
</table>
</td>
<td>@Html.Raw(" ") </td>
<td>
<table>
<thead>Recherche Agence/Commande</thead>
<tr>
<td>
@Html.LabelFor(m => m.CodeBarreRech)@Html.Raw(" ") @Html.Raw(" ")
@Html.TextBoxFor(m => m.CodeBarreRech,new { @maxlength = "10" })@Html.Raw(" ")@Html.Raw(" ")
<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(" ") @Html.Raw(" ")
</td>
<td>
@Html.TextBoxFor(m => m.LigneCommande,new { @maxlength = "5" })@Html.Raw(" ")
@Html.Validationmessage("CustomValidationmiseSurbrillance")
<button type="submit" id="btnmiseSurbrillance">Mise en surbrillance</button>
</td>
</tr>
</table>
</td>
<td>@Html.Raw(" ") </td>
<td>
<table>
<thead>Recherche LigneCommande</thead>
<tr>
<td>
@Html.LabelFor(m => m.CodeBarreRech)@Html.Raw(" ") @Html.Raw(" ")
</td>
<td>
@Html.TextBoxFor(m => m.CodeBarreRech,new { @maxlength = "10" })@Html.Raw(" ")@Html.Raw(" ")
<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>
}
}
}