我正在尝试将@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
......这样的事情:< / p>
@foreach (var key in Model.Basket.Keys)
{
<mytaghelper for="Baskey[key]" />
}
并使用TagHelper
的{{1}}方法:
Process
虽然我if (For != null)
{
(_htmlHelper as HtmlHelper)?.Contextualize(ViewContext);
tag.InnerHtml.Append(_htmlHelper.Editor(For.Name));
}
中有ModelExpression
(“For
”),但我认为还有另一种方法可以调用TagHelper
,除非我已经尝试过。
感谢您的帮助!
答案 0 :(得分: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"])