parent
bd6520cc50
commit
1672820e4e
|
|
@ -20,6 +20,38 @@
|
||||||
<option value="HtmlEncode[[2]]">HtmlEncode[[Product_2]]</option>
|
<option value="HtmlEncode[[2]]">HtmlEncode[[Product_2]]</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<label for="HtmlEncode[[Number]]">HtmlEncode[[Number]]</label>
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
<label for="HtmlEncode[[ProductName]]">HtmlEncode[[ProductName]]</label>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="HtmlEncode[[number]]" data-val="HtmlEncode[[true]]" data-val-required="HtmlEncode[[The Number field is required.]]" id="HtmlEncode[[ProductDetails_0__Number]]" name="HtmlEncode[[ProductDetails[0].Number]]" value="HtmlEncode[[0]]" />
|
||||||
|
<span class="text-danger HtmlEncode[[field-validation-valid]]" style="" data-valmsg-for="HtmlEncode[[ProductDetails[0].Number]]" data-valmsg-replace="HtmlEncode[[true]]"></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="HtmlEncode[[text]]" data-val="HtmlEncode[[true]]" data-val-required="HtmlEncode[[The ProductName field is required.]]" id="HtmlEncode[[ProductDetails_0__ProductName]]" name="HtmlEncode[[ProductDetails[0].ProductName]]" value="HtmlEncode[[Product_0]]" />
|
||||||
|
<span class="text-danger HtmlEncode[[field-validation-valid]]" style="" data-valmsg-for="HtmlEncode[[ProductDetails[0].ProductName]]" data-valmsg-replace="HtmlEncode[[true]]"></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="HtmlEncode[[number]]" data-val="HtmlEncode[[true]]" data-val-required="HtmlEncode[[The Number field is required.]]" id="HtmlEncode[[ProductDetails_1__Number]]" name="HtmlEncode[[ProductDetails[1].Number]]" value="HtmlEncode[[1]]" />
|
||||||
|
<span class="text-danger HtmlEncode[[field-validation-valid]]" style="" data-valmsg-for="HtmlEncode[[ProductDetails[1].Number]]" data-valmsg-replace="HtmlEncode[[true]]"></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="HtmlEncode[[text]]" data-val="HtmlEncode[[true]]" data-val-required="HtmlEncode[[The ProductName field is required.]]" id="HtmlEncode[[ProductDetails_1__ProductName]]" name="HtmlEncode[[ProductDetails[1].ProductName]]" value="HtmlEncode[[Product_1]]" />
|
||||||
|
<span class="text-danger HtmlEncode[[field-validation-valid]]" style="" data-valmsg-for="HtmlEncode[[ProductDetails[1].ProductName]]" data-valmsg-replace="HtmlEncode[[true]]"></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="order" for="HtmlEncode[[SubstituteProducts]]">HtmlEncode[[SubstituteProducts]]</label>
|
<label class="order" for="HtmlEncode[[SubstituteProducts]]">HtmlEncode[[SubstituteProducts]]</label>
|
||||||
<select id="HtmlEncode[[SubstituteProducts]]" multiple="HtmlEncode[[multiple]]" name="HtmlEncode[[SubstituteProducts]]"><option value="HtmlEncode[[0]]">HtmlEncode[[Product_0]]</option>
|
<select id="HtmlEncode[[SubstituteProducts]]" multiple="HtmlEncode[[multiple]]" name="HtmlEncode[[SubstituteProducts]]"><option value="HtmlEncode[[0]]">HtmlEncode[[Product_0]]</option>
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,38 @@
|
||||||
<option value="2">Product_2</option>
|
<option value="2">Product_2</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<label for="Number">Number</label>
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
<label for="ProductName">ProductName</label>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="number" data-val="true" data-val-required="The Number field is required." id="ProductDetails_0__Number" name="ProductDetails[0].Number" value="0" />
|
||||||
|
<span class="text-danger field-validation-valid" style="" data-valmsg-for="ProductDetails[0].Number" data-valmsg-replace="true"></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" data-val="true" data-val-required="The ProductName field is required." id="ProductDetails_0__ProductName" name="ProductDetails[0].ProductName" value="Product_0" />
|
||||||
|
<span class="text-danger field-validation-valid" style="" data-valmsg-for="ProductDetails[0].ProductName" data-valmsg-replace="true"></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="number" data-val="true" data-val-required="The Number field is required." id="ProductDetails_1__Number" name="ProductDetails[1].Number" value="1" />
|
||||||
|
<span class="text-danger field-validation-valid" style="" data-valmsg-for="ProductDetails[1].Number" data-valmsg-replace="true"></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" data-val="true" data-val-required="The ProductName field is required." id="ProductDetails_1__ProductName" name="ProductDetails[1].ProductName" value="Product_1" />
|
||||||
|
<span class="text-danger field-validation-valid" style="" data-valmsg-for="ProductDetails[1].ProductName" data-valmsg-replace="true"></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="order" for="SubstituteProducts">SubstituteProducts</label>
|
<label class="order" for="SubstituteProducts">SubstituteProducts</label>
|
||||||
<select id="SubstituteProducts" multiple="multiple" name="SubstituteProducts"><option value="0">Product_0</option>
|
<select id="SubstituteProducts" multiple="multiple" name="SubstituteProducts"><option value="0">Product_0</option>
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,38 @@
|
||||||
<option value="HtmlEncode[[2]]">HtmlEncode[[Product_2]]</option>
|
<option value="HtmlEncode[[2]]">HtmlEncode[[Product_2]]</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<label for="HtmlEncode[[Number]]">HtmlEncode[[Number]]</label>
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
<label for="HtmlEncode[[ProductName]]">HtmlEncode[[ProductName]]</label>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input data-val="HtmlEncode[[true]]" data-val-required="HtmlEncode[[The Number field is required.]]" id="HtmlEncode[[ProductDetails_0__Number]]" name="HtmlEncode[[ProductDetails[0].Number]]" type="HtmlEncode[[number]]" value="HtmlEncode[[0]]" />
|
||||||
|
<span class="HtmlEncode[[field-validation-valid text-danger]]" data-valmsg-for="HtmlEncode[[ProductDetails[0].Number]]" data-valmsg-replace="HtmlEncode[[true]]" style=""></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input data-val="HtmlEncode[[true]]" data-val-required="HtmlEncode[[The ProductName field is required.]]" id="HtmlEncode[[ProductDetails_0__ProductName]]" name="HtmlEncode[[ProductDetails[0].ProductName]]" type="HtmlEncode[[text]]" value="HtmlEncode[[Product_0]]" />
|
||||||
|
<span class="HtmlEncode[[field-validation-valid text-danger]]" data-valmsg-for="HtmlEncode[[ProductDetails[0].ProductName]]" data-valmsg-replace="HtmlEncode[[true]]" style=""></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input data-val="HtmlEncode[[true]]" data-val-required="HtmlEncode[[The Number field is required.]]" id="HtmlEncode[[ProductDetails_1__Number]]" name="HtmlEncode[[ProductDetails[1].Number]]" type="HtmlEncode[[number]]" value="HtmlEncode[[1]]" />
|
||||||
|
<span class="HtmlEncode[[field-validation-valid text-danger]]" data-valmsg-for="HtmlEncode[[ProductDetails[1].Number]]" data-valmsg-replace="HtmlEncode[[true]]" style=""></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input data-val="HtmlEncode[[true]]" data-val-required="HtmlEncode[[The ProductName field is required.]]" id="HtmlEncode[[ProductDetails_1__ProductName]]" name="HtmlEncode[[ProductDetails[1].ProductName]]" type="HtmlEncode[[text]]" value="HtmlEncode[[Product_1]]" />
|
||||||
|
<span class="HtmlEncode[[field-validation-valid text-danger]]" data-valmsg-for="HtmlEncode[[ProductDetails[1].ProductName]]" data-valmsg-replace="HtmlEncode[[true]]" style=""></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="HtmlEncode[[order]]" for="HtmlEncode[[SubstituteProducts]]">HtmlEncode[[SubstituteProducts]]</label>
|
<label class="HtmlEncode[[order]]" for="HtmlEncode[[SubstituteProducts]]">HtmlEncode[[SubstituteProducts]]</label>
|
||||||
<select id="HtmlEncode[[SubstituteProducts]]" multiple="HtmlEncode[[multiple]]" name="HtmlEncode[[SubstituteProducts]]"><option value="HtmlEncode[[0]]">HtmlEncode[[Product_0]]</option>
|
<select id="HtmlEncode[[SubstituteProducts]]" multiple="HtmlEncode[[multiple]]" name="HtmlEncode[[SubstituteProducts]]"><option value="HtmlEncode[[0]]">HtmlEncode[[Product_0]]</option>
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,38 @@
|
||||||
<option value="2">Product_2</option>
|
<option value="2">Product_2</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<label for="Number">Number</label>
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
<label for="ProductName">ProductName</label>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input data-val="true" data-val-required="The Number field is required." id="ProductDetails_0__Number" name="ProductDetails[0].Number" type="number" value="0" />
|
||||||
|
<span class="field-validation-valid text-danger" data-valmsg-for="ProductDetails[0].Number" data-valmsg-replace="true" style=""></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input data-val="true" data-val-required="The ProductName field is required." id="ProductDetails_0__ProductName" name="ProductDetails[0].ProductName" type="text" value="Product_0" />
|
||||||
|
<span class="field-validation-valid text-danger" data-valmsg-for="ProductDetails[0].ProductName" data-valmsg-replace="true" style=""></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input data-val="true" data-val-required="The Number field is required." id="ProductDetails_1__Number" name="ProductDetails[1].Number" type="number" value="1" />
|
||||||
|
<span class="field-validation-valid text-danger" data-valmsg-for="ProductDetails[1].Number" data-valmsg-replace="true" style=""></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input data-val="true" data-val-required="The ProductName field is required." id="ProductDetails_1__ProductName" name="ProductDetails[1].ProductName" type="text" value="Product_1" />
|
||||||
|
<span class="field-validation-valid text-danger" data-valmsg-for="ProductDetails[1].ProductName" data-valmsg-replace="true" style=""></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="order" for="SubstituteProducts">SubstituteProducts</label>
|
<label class="order" for="SubstituteProducts">SubstituteProducts</label>
|
||||||
<select id="SubstituteProducts" multiple="multiple" name="SubstituteProducts"><option value="0">Product_0</option>
|
<select id="SubstituteProducts" multiple="multiple" name="SubstituteProducts"><option value="0">Product_0</option>
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,10 @@ namespace HtmlGenerationWebSite.Controllers
|
||||||
{
|
{
|
||||||
_productsList = new SelectList(_products, "Number", "ProductName");
|
_productsList = new SelectList(_products, "Number", "ProductName");
|
||||||
_productsListWithSelection = new SelectList(_products, "Number", "ProductName", 2);
|
_productsListWithSelection = new SelectList(_products, "Number", "ProductName", 2);
|
||||||
|
foreach (var i in _order.Products)
|
||||||
|
{
|
||||||
|
_order.ProductDetails.Add(_products[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult Enum()
|
public IActionResult Enum()
|
||||||
|
|
|
||||||
|
|
@ -55,5 +55,7 @@ namespace HtmlGenerationWebSite.Models
|
||||||
get;
|
get;
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IList<Product> ProductDetails { get; } = new List<Product>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
@model HtmlGenerationWebSite.Models.Order
|
@model HtmlGenerationWebSite.Models.Order
|
||||||
|
|
||||||
@{
|
@{
|
||||||
ViewBag.Title = "Order Page";
|
ViewBag.Title = "Order Page";
|
||||||
|
|
@ -33,6 +33,34 @@
|
||||||
@{ var @object = "multiple"; }
|
@{ var @object = "multiple"; }
|
||||||
<select asp-for="@Model.Products" asp-items="@((IEnumerable<SelectListItem>)ViewBag.Items)" multiple="@(@object)"></select>
|
<select asp-for="@Model.Products" asp-items="@((IEnumerable<SelectListItem>)ViewBag.Items)" multiple="@(@object)"></select>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
@if (Model.ProductDetails.Count > 0)
|
||||||
|
{
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<label asp-for="ProductDetails.FirstOrDefault().Number"></label>
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
<label asp-for="ProductDetails.FirstOrDefault().ProductName"></label>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
@for (var i = 0; i < Model.ProductDetails.Count; i++)
|
||||||
|
{
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input asp-for="ProductDetails[i].Number" />
|
||||||
|
<span asp-validation-for="ProductDetails[i].Number" class="text-danger" style=""></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input asp-for="ProductDetails[i].ProductName" />
|
||||||
|
<span asp-validation-for="ProductDetails[i].ProductName" class="text-danger" style=""></span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</table>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label asp-for="SubstituteProducts" class="order"></label>
|
<label asp-for="SubstituteProducts" class="order"></label>
|
||||||
@* Use same select list as Products. Selection when Products is non-null is not used here. *@
|
@* Use same select list as Products. Selection when Products is non-null is not used here. *@
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,34 @@
|
||||||
@{ var productSelectList = (IEnumerable<SelectListItem>)ViewBag.Items; }
|
@{ var productSelectList = (IEnumerable<SelectListItem>)ViewBag.Items; }
|
||||||
@Html.ListBoxFor(m => m.Products, productSelectList)
|
@Html.ListBoxFor(m => m.Products, productSelectList)
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
@if (Model.ProductDetails.Count > 0)
|
||||||
|
{
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
@Html.LabelFor(m => m.ProductDetails.FirstOrDefault().Number)
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
@Html.LabelFor(m => m.ProductDetails.FirstOrDefault().ProductName)
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
@for (var i = 0; i < Model.ProductDetails.Count; i++)
|
||||||
|
{
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
@Html.TextBoxFor(m => m.ProductDetails[i].Number, htmlAttributes: new { type = "number" })
|
||||||
|
@Html.ValidationMessageFor(m => m.ProductDetails[i].Number, message: null, htmlAttributes: new { @class = "text-danger", style = "" })
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.TextBoxFor(m => m.ProductDetails[i].ProductName)
|
||||||
|
@Html.ValidationMessageFor(m => m.ProductDetails[i].ProductName, message: null, htmlAttributes: new { @class = "text-danger", style = "" })
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</table>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@Html.LabelFor(m => m.SubstituteProducts, htmlAttributes: new { @class = "order" })
|
@Html.LabelFor(m => m.SubstituteProducts, htmlAttributes: new { @class = "order" })
|
||||||
@* Use same select list as Products. Selection when Products is non-null is not used here. *@
|
@* Use same select list as Products. Selection when Products is non-null is not used here. *@
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue