CustomViewComponentUsingasp-forasParametersCustomViewComponentusingasp-forasParameters传递给视图组件:publicclassEditorViewComponent:ViewComponent{publicIViewComponentResultInvoke(ModelExpressionaspFor=null){//调试时,aspFor有正确的值returnView(aspFor);但我无法在组件的视图中对其进行评估。这不起作用:@modelMicrosoft.AspNetCore.Mvc.ViewFeatures.ModelExpression有什么想法吗?我认为您正在混合使用ViewComponents和TagHelpers:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components查看组件在以下位置调用查看组件:@awaitComponent.InvokeAsync("EditorView",@Model.Property);//或尝试以下代码片段:Taghelpers标签助手只能这样调用:如果你想将ModelExpression传递给底层ViewComponent,然后将其传递给TagHelper,你必须使用@TheModelExpression.Model执行此操作:@modelMicrosoft.AspNetCore.Mvc.ViewFeatures.ModelExpression正如@JoelHarkes提到的,在这种特殊情况下,自定义标签助手可能更合适。无论如何,我仍然可以在TagHelper中呈现PartialViewala模板:私有HtmlEncoder;_htmlpublicEditorTagHelper(IHtmlHelperhtmlHelper,HtmlEncoderhtmlEncoder){_htmlHelper=htmlHelperasHtmlHelper;_htmlEncoder=html编码器;}[HtmlAttributeName("asp-for")]publicModelExpressionFor{get;放;_htmlHelper.Contextualize(值);}publicoverrideasyncTaskProcessAsync(TagHelperContextcontext,TagHelperOutputoutput){output.TagName=null;varpartial=await_htmlHelper.PartialAsync("TagHelpers/Editor",For);varwriter=newStringWriter();partial.WriteTo(作者,_htmlEncoder);output.Content.SetHtmlContent(writer.ToString());然后.cshtml模板看起来和viewcomponent完全一样。以上就是C#学习教程:以asp-for为参数自定义ViewComponent分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
