Нет привязки модели с шаблоном редактора

У меня есть следующий вид:

@model StockItemDetailModel

@using (Html.BeginForm("EditDetails", "StockItem"))
{
    <div class="ItemDetails">
        <table class="datagrid">
            <tr>
                <th colspan="3">@Model.StockItemPropertiesCaption</th>
            </tr>
            <tr>
                <td class="label">@Model.StoreLabel</td>
                <td class="value">@Html.DisplayFor(item => item.Store)</td>
                <td></td>
            </tr>
            <tr>
                <td class="label">@Model.BuildingLabel</td>
                <td class="value">@Html.DevExpress().TextBoxFor(model => model.Building).GetHtml()</td>
                <td class="validationError">@Html.ValidationMessageFor(model => model.Building)</td>
            </tr>

...

             <tr>
                <td colspan="3">@Html.EditorFor(model => model.AmountModel, "Amounts")</td>
>            </tr>
            <tr>
                <td colspan="3" class="validationError">@Html.ValidationMessageFor(model => model.AmountModel)</td>
            </tr>
            <tr />
        </table>
    </div>
    <br />

    <input type="submit" class="button" value="@Model.SaveButtonLabel" />
}

Частичное представление "Суммы" выглядит следующим образом:

@model AmountModel

    <table>
    <tr>
        <td class="label">@Model.AmountLabel</td>
        <td class="value">
            @Html.DevExpress().SpinEditFor(model => model.DenormalizedNetAmount,
                    settings =>
                    {
                        settings.Name = "DenormalizedNetAmount";
                        settings.Width = 153;
                        settings.Properties.DisplayFormatString = @"0.0,0";
                        settings.Number = 0;
                    }).GetHtml()
        </td>
        <td class="value">
            @Html.DevExpress().ComboBoxFor(model => model.NetAmountUnit,
                    settings =>
                    {
                        settings.Name = "NetAmountUnit";
                        settings.Width = 60;
                    }).BindList(args => this.Model.AllUnits, args => this.Model.AllUnits).GetHtml()
        </td>
    </tr>

...

    </table>

Это AmountModel:

        public class AmountModel
        {
            public decimal DenormalizedNetAmount { get; set; }
            public string NetAmountUnit { get; set; }

...

            public string AmountLabel
            {
                get { return i18n.StockItemDetailModel_AmountLabel; }
            }

...
        }

Но значения полей ввода отсутствуют в модели в контроллере, созданном связывателем модели. Почему связыватель модели не распознает значения в шаблоне редактора?

Когда я передавал FormCollection, значения правильно передавались под именами "AmountModel.~"

public ActionResult EditDetails(FormCollection collection)
{
var netamount = collection["AmountModel.DenormalizedNetAmount"]; //correct value!

...

}

1 ответ

НЕ указывайте свойство Name при использовании строго типизированных (***For) помощников.

См. Учебный ресурс по редактированию и редактированию моделей MVC на форуме DevExpress.

Другие вопросы по тегам