@ Html.Editor для отправки пустого массива на пост - PullRequest
1 голос
/ 28 марта 2012

В моей модели:

 public class WzDetail
    {
        public Product Product { get; set; }
        public bool check { get; set; }
        public int PlanQuantity { get; set; }
        public int RealQuantity { get; set; }
    }
public class Wz
{
   public IList<WzDetail> WzMain { get; set; }
   public IList<WzDetail> WzAdditional { get; set; }
   public IList<WzDetail> WzEquipment { get; set; }
   public string SignatureOne { get; set; }
   public string SignatureTwo { get; set; }
}

Как видите, есть список.Отображает это простым способом:

            <table class="table1" >
         @Html.EditorFor(x => x.WzEquipment) 
            </table>

Мои редакторы Шаблоны:

    @model WzDetail

<tr>
    @Html.HiddenFor(x => x.Product.BarCode)
    @Html.HiddenFor(x => x.Product.Checked)
    @Html.HiddenFor(x => x.Product.ProductGroup)
    @Html.HiddenFor(x => x.Product.ProductId)
    @Html.HiddenFor(x => x.Product.Weight)
    <td>@Model.Product.ProductName </td>  
    <td>@Model.PlanQuantity</td>
    <td>@Html.TextBoxFor(m => m.RealQuantity, new { type = "range", pattern = "[0-9]*", min = "0", max = @Model.PlanQuantity*2, Value = @Model.PlanQuantity })</td>
    <td align="right" ><label class="mylabel" data-theme="c" for="@Model.Product.ProductId" data-iconpos="right" >&nbsp;</label>
    @Html.CheckBoxFor(m => m.check, new { type = "checkbox", id = @Model.Product.ProductId, @class = "mychck" })
</tr>
@Html.ValidationMessageFor(m => m.RealQuantity)

Все хорошо отображается.

, но после пост-модели для контроллера, каждый раз спискипусты, даже если генерация представления завершена.

Это код, сгенерированный jQuery Mobile на стороне клиента:

<table class="table1">
<tbody>
<tr>
<input id="WzMain_0__Product_BarCode" type="hidden" value="" name="WzMain[0].Product.BarCode">
<input id="WzMain_0__Product_Checked" type="hidden" value="False" name="WzMain[0].Product.Checked" data-val-required="The Checked field is required." data-val="true">
<input id="WzMain_0__Product_ProductGroup" type="hidden" value="Main" name="WzMain[0].Product.ProductGroup" data-val-required="The ProductGroup field is required." data-val="true">
<input id="WzMain_0__Product_ProductId" type="hidden" value="4" name="WzMain[0].Product.ProductId" data-val-required="The ProductId field is required." data-val-number="The field ProductId must be a number." data-val="true">
<input id="WzMain_0__Product_Weight" type="hidden" value="0" name="WzMain[0].Product.Weight" data-val-required="The Weight field is required." data-val-number="The field Weight must be a number." data-val="true">
<td>Woda 18,9L </td>
<td>1</td>
<td>
<input id="WzMain_0__RealQuantity" class="ui-input-text ui-body-a ui-corner-all ui-shadow-inset ui-slider-input" type="number" data-type="range" pattern="[0-9]*" name="WzMain[0].RealQuantity" min="0" max="2" data-val-required="The Zrealizowana ilość field is required." data-val-regex-pattern="^-?\d+$" data-val-regex="Ilość można podać tylko liczbowo" data-val-range-min="0" data-val-range-max="999" data-val-range="Zakres od 1 do 999" data-val-number="The field Zrealizowana ilość must be a number." data-val="true" value="1">
<div class="ui-slider ui-btn-down-a ui-btn-corner-all" role="application">
<a class="ui-slider-handle ui-btn ui-btn-up-a ui-btn-corner-all ui-shadow" href="#" data-corners="true" data-shadow="true" data-iconshadow="true" data-inline="false" data-wrapperels="span" data-theme="a" role="slider" aria-valuemin="0" aria-valuemax="2" aria-valuenow="1" aria-valuetext="1" title="1" aria-labelledby="WzMain_0__RealQuantity-label" style="left: 50%;">
<span class="ui-btn-inner">
<span class="ui-btn-text"></span>
</span>
</a>
</div>
</td>
<td align="right">
<div class="ui-checkbox">
<input id="4" class="mychck" type="checkbox" value="true" name="WzMain[0].check" data-val-required="The Zaznaczony field is required." data-val="true">
<label class="mylabel ui-btn ui-btn-up-c ui-btn-icon-right ui-checkbox-off" data-iconpos="right" for="4" data-theme="c" data-corners="true" data-shadow="false" data-iconshadow="true" data-inline="false" data-wrapperels="span" data-icon="checkbox-off">
<span class="ui-btn-inner">
<span class="ui-btn-text">&nbsp;</span>
<span class="ui-icon ui-icon-checkbox-off ui-icon-shadow"></span>
</span>
</label>
</div>
<input type="hidden" value="false" name="WzMain[0].check">
</td>
</tr>
</tbody>
</table>

Есть идеи, как отправить список на контроллер?

Ответы [ 2 ]

1 голос
/ 28 марта 2012

контроллер, который получает действие, должен иметь параметр с именем WzMain типа IEnumerable<WzDetail>

попробовать его

0 голосов
/ 29 марта 2012

OK.мой плохой, я пытаюсь написать так:

@using (Html.BeginForm("DocumentConfirmation", "Order", @Model, FormMethod.Post))

Но правильно:

@using (Html.BeginForm("DocumentConfirmation", "Order", FormMethod.Post))
...