Нет привязки модели с шаблоном редактора
У меня есть следующий вид:
@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.