我在多个视图中使用了以下代码:
Instant
我想从这个代码中创建可重用的TagHelper(或者替代ViewComponent),所以我会像这样使用它:
LocalDateTime ld1 = LocalDateTime.of(2015, Month.NOVEMBER, 1, 2, 0);
ZonedDateTime zd1 = ZonedDateTime.of(ld1, ZoneId.of("US/Eastern"));
LocalDateTime ld2 = LocalDateTime.of(2015, Month.NOVEMBER, 1, 3, 0);
ZonedDateTime zd2 = ZonedDateTime.of(ld2, ZoneId.of("US/Eastern"));
System.out.println(zd1);
System.out.println(zd2);
System.out.println(zd1.toInstant());
System.out.println(zd2.toInstant());
但是我无法将Instant
从我的自定义标记助手传递到基础InputTagHelper。
我得到了:
ArgumentException:HTML字段的名称不能为null或为空。而是使用方法 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper.Editor或 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper`1.EditorFor with a a 非空的htmlFieldName参数值。参数名称:表达式
在这一行:<input asp-for="@Model.Tags" class="form-control" data-provider="tagseditor" />
<!-- some additional code will be added in future -->
<tags-editor for="@Model.Tags" />
ModelExpression
答案 0 :(得分:0)
问题的要点来自string GetImageDetailsHandler(..)
本身不是模型的事实。您必须调用其ModelExpression
属性。
所以在你的局部视图中:
Model
然后,您无法将输出标记名称设置为null,因为这会在您的视图中生成<!-- Views/Shared/TagHelpers/TagsEditor -->
@model ModelExpression
<input asp-for="@Model.Model" class="form-control" data-provider="tagseditor" />
标记。我建议你把它改成&#34; div&#34;,或者任何容器适合你。
最后,由于输入标记是自动关闭的,因此您需要将输出标记模式更改为<null></null>
以强制生成TagMode.StartTagAndEndTag
,而不仅仅是<div></div>
。
总而言之,<div/>
方法变为:
ProcessAsync