辞書のエントリに使用しようとして@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]" />
}
TagHelper
のProcess
メソッドでは、次のようになります。
if (For != null)
{
(_htmlHelper as HtmlHelper)?.Contextualize(ViewContext);
tag.InnerHtml.Append(_htmlHelper.Editor(For.Name));
}
私はModelExpression
(" For
")を持っていますが、私が試した以外TagHelper
に呼び出す方法はないと思います。Editor
ご協力いただきありがとうございます!