我正在使用此处找到的示例来允许从标签助手中呈现局部视图。我在这里要做的是能够像这样定义一个标签助手:
<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 源代码时,我只是在输入的 id 和名称属性中看到字面上的名称“For”。此外,在我的剃刀页面模型中设置的值也没有正确显示。
我想要发生的是 html 将以这样一种方式呈现,即在发布页面时,我的剃须刀页面的模型将填充在标签助手/部分视图下选择的值。它会特别围绕“StartDate”(在我的示例中),而不是属性“For”。
有谁知道我做错了什么,以及我可以在此示例中更改哪些内容以正确地将 ModelExpression 传递给局部视图?
扬帆大鱼
哔哔one
相关分类