0

トランザクション数が動的なインポート ページがあります。トランザクションごとに、いくつかのプレーン テキスト データ ラベルと 1 つの DropDownList (Categories) があります。カテゴリ モデルを additionalViewData として EditorTemplate に渡すことにより、このCategoryDropDownList に ViewModel ( ) からのデータを入力しようとしています。Categories

以下の例を使用すると、EditorTemplate ページに次のエラーが表示されます。 .Linq.Expressions.Expression>, System.Collections.Generic.IEnumerable)' は、使用法から推測できません。型引数を明示的に指定してみてください。

これを修正する方法についてのアイデアはありますか?

ビューモデル:

public class ImportViewModel
{
    public List<AbnAmroTransaction> AbnAmroTransactions { get; set; }
    public IEnumerable<SelectListItem> Categories { get; set; }
}

モデル:

public class AbnAmroTransaction
{
    public string Currency { get; set; }
    public int DateTime { get; set; }
    public string Description { get; set; }
    public int CategoryId { get; set; }
}

形:

@using (Html.BeginForm("ImportPreview", "Home", FormMethod.Post))
{
    <table>
    @Html.EditorFor(m => m.AbnAmroTransactions, new { Categories = Model.Categories });
    </table>
    <input id="btnSave" type="submit" value="Save data" />
}

エディター テンプレート:

<tr>
    <td style="width: 80px;">
        @Html.Raw(CurrencyHelper.GetHtmlCurrency(Model.Currency, Model.Amount))
    </td>
    <td>@Model.DateTime</td>
    <td>@Model.Description</td>
    <td>@Html.DropDownListFor(Model.CategoryId, ViewData["Categories"])</td>
</tr>
4

2 に答える 2

2

次のように、カテゴリを additionalViewData としてエディタに提供できます。

@Html.EditorFor(m => m.AbnAmroTransactions, {Categories = Model.Categories});

ただし、そのエディターを使用するすべての場所でそれを行う必要があるという意味に注意してください。

モデル式と一緒にカテゴリを渡すことができるエディターを使用する方が良いかもしれません

于 2012-05-20T17:19:25.123 に答える
0

厳密に型指定されているわけではありませんが、コントローラーでカテゴリのリストを作成して ViewBag に配置できます。その後、すべてのトランザクションで使用でき、一度だけメモリに保存されます。

リスト内の各トランザクションに Categories コレクションを配置すると、複数回使用できます。

于 2012-05-20T17:33:19.893 に答える