2

辞書のエントリに使用しようとして@Html.Editorいますが、機能しません。ASP.Net Core 1.0 を実行しています。

モデル例:

public class TestModel
{
    public string Title { get; set; }
    public IDictionary<int, Fruit> Basket { get; set; }
}

これはうまくいきます:

@foreach (var key in Model.Basket.Keys)
{
    @Html.EditorFor(m => m.Basket[key])
}

しかし、これはしません:

@foreach (var key in Model.Basket.Keys)
{
    @Html.Editor($"Basket[{key}]")
}

後者では式Basket[1]などが解決されず、常に空白のテキスト ボックスが表示されます。エディター テンプレートの使用を強制するとFruit、モデルは常に null になります。

可能な限り使用する方が良いことはわかっていますEditorForが、実際の自明ではないアプリケーションではIHtmlHelper.Editor(expression)、内部から呼び出していTagHelperます...次のようなものです:

@foreach (var key in Model.Basket.Keys)
{
    <mytaghelper for="Baskey[key]" />
}

TagHelperProcessメソッドでは、次のようになります。

if (For != null)
{
    (_htmlHelper as HtmlHelper)?.Contextualize(ViewContext);
    tag.InnerHtml.Append(_htmlHelper.Editor(For.Name));
}

私はModelExpression(" For")を持っていますが、私が試した以外TagHelperに呼び出す方法はないと思います。Editor

ご協力いただきありがとうございます!

4

1 に答える 1