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编辑器模板,则模型始终为空。

我知道EditorFor尽可能使用它会更好,但在我真正的、非平凡的应用程序中,我是IHtmlHelper.Editor(expression)从内部调用的TagHelper......像这样:

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

而在TagHelper'sProcess方法中:

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

虽然我有ModelExpression(" For") ,但TagHelper我认为Editor除了我已经尝试过之外,没有其他方法可以调用。

谢谢你的帮助!

4

1 回答 1

1
  @Html.EditorFor(model => model.urDictionaryName["KeyValue"], new { htmlAttributes = new { @id = "yourId" } })

或者如果你想要它作为标签,你可以将它用作标签并使用 hiddenfor 进行映射

 @Html.Label(Model.urDictionaryName["KeyValue"])
 @Html.HiddenFor(model => model.urDictionaryName["KeyValue"], Model.maskDetails["KeyValue"])
于 2020-08-20T15:55:00.187 回答