我将使用此处的示例,允许在标签助手内呈现部分视图。我的目标是能够像这样定义标签助手:
最后,我的局部视图定义如下:
我遇到的问题是无法正确传递模型表达式“For”到部分视图中。当我查看HTML源代码时,只能看到input标签的id和name属性中字面上的名称“For”。此外,我在razor页面模型中设置的值也没有正确显示。
我希望发生的情况是,在提交页面后,我的razor页面模型将以所选值填充位于标签助手/部分视图下方的"StartDate"(在我的示例中),而不是"For"属性。
有人知道我做错了什么,以及我可以在这个示例中更改什么来正确地将ModelExpression传递到部分视图吗?
<mydateinput for="@Model.StartDate" />
在标签助手的c#代码中,我需要定义“for”属性,从我所了解的情况来看,这需要定义为“ModelExpression”。
public class MyDateInputTagHelper : TagHelper
{
public ModelExpression For { get; set; }
...
}
使用之前在这篇文章中提到的代码,我正在渲染一个部分视图,并将标签助手的类作为部分视图的模型传递。
public override void Process(TagHelperContext context, TagHelperOutput output)
{
base.Process(context, output);
((IViewContextAware)HtmlHelper).Contextualize(ViewContext);
output.Content.SetHtmlContent(HtmlHelper.Partial("~/Views/Partials/TagHelpers/MyDateInput.cshtml", this));
}
最后,我的局部视图定义如下:
<input asp-for="For" />
我遇到的问题是无法正确传递模型表达式“For”到部分视图中。当我查看HTML源代码时,只能看到input标签的id和name属性中字面上的名称“For”。此外,我在razor页面模型中设置的值也没有正确显示。
我希望发生的情况是,在提交页面后,我的razor页面模型将以所选值填充位于标签助手/部分视图下方的"StartDate"(在我的示例中),而不是"For"属性。
有人知道我做错了什么,以及我可以在这个示例中更改什么来正确地将ModelExpression传递到部分视图吗?