私のビューファイルには、現在次のコードがあります。
@if ((Model.CustomerOrderTrackings != null) && (Model.CustomerOrderTrackings.Count > 0)) {
for (int i = 0; i < Model.CustomerOrderTrackings.Count; i++) {
@Html.EditorFor(m => m.CustomerOrderTrackings[i])
}
} else {
@*The problem is here*@
@Html.EditorFor(m => new CustomerOrderTracking())
}
次に、私のエディター テンプレートは次のようになります。
@model Models.CustomerOrderTracking
<tr class="gridrow">
<td class="carrierName">
@Html.HiddenFor(m => m.Id, new { id = "" })
@Html.HiddenFor(m => m.ShipperId, new { id = "", @class = "trackingShipperId" })
@Html.DropDownListFor(m => m.CarrierName, ViewExtensions.ToFriendlySelectList<CustomerOrderTracking.CarrierNames>(Model.CarrierName), new { id = "" })
</td>
<td class="service">@Html.DropDownListFor(m => m.ShippingType, ViewExtensions.ToFriendlySelectList<CustomerOrderTracking.ShippingTypes>(Model.ShippingType), new { id = "" })</td>
<td class="trackingNumber">@Html.TextBoxFor(m => m.ShippingTrackingNumber, new { @class = "trackingInput", id = "" }) <a href="" target="_blank" class="icon track"></a></td>
<td class="shippingCost">
@Html.TextBoxFor(m => m.ShippingCost, new { @class = "shippingInput", id = "" })
<div onclick="Operations.Orders.DeleteTrackingRow(this)" class="icon delete deleteTracking" title="Delete this shipment?"></div>
</td>
</tr>
私がやろうとしているのは、現在オブジェクトにアイテムが添付されていない場合に備えて、このテーブルにデフォルトの行を追加することです。次のエラーが発生するため、オブジェクトの新しいインスタンスが機能していません。Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
入力を手作業でコーディングすることもできますが、手作業でコーディングした入力を使用し、ASP.NET MVC 拡張機能から自動生成された入力を使用するため、私のコードはかなりずさんです。
オブジェクトのデフォルト インスタンスをエディタ テンプレートに渡す方法はありますか?