【发布时间】:2016-06-24 00:57:57
【问题描述】:
我正在尝试将@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 会更好,但在我真正的、非平凡的应用程序中,我是从TagHelper 内部调用IHtmlHelper.Editor(expression)...类似这样的:
@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));
}
虽然我在TagHelper 中有ModelExpression(“For”),但我认为没有其他方法可以调用Editor,除非我已经尝试过。
感谢您的帮助!
【问题讨论】:
-
你应该看看这篇文章:stackoverflow.com/questions/5424643/…
标签: asp.net-mvc html-helper asp.net-core-mvc tag-helpers