ASP.NET 核心 - TagHelper、部分视图和 属性 名称冲突

ASP.NET Core - TagHelper, Partial Views and property name conflict

在一个 ASP.NET 核心 MVC 项目中,假设我有两个局部视图 _viewA_viewB 以及两个关联模型 ModelAModelB

并且说 ModelAModelB 都有一个名为 MyProperty 的 属性。 然后在 _viewA_viewB 中我使用 asp-for="MyProperty".

我的问题是我的页面最后有两个具有相同 ID 的 html 元素。
我怎样才能避免这种情况?

请注意,我不想重命名 MyProperty,因为我的模型不应该关心 UI 约束。

谢谢 @stephen-muecke as well as this 我已经用 HtmlFieldPrefix 解决了这个问题。这是一个与 .Net Core 一起使用的扩展方法,将在 @html.PartialFor("_viewA", "viewAPrefix") 中使用。然后,部分视图中的所有 ID 和名称都带有前缀(即使不使用 asp-for)。

public static IHtmlContent PartialFor(this IHtmlHelper helper, string partialViewName, string prefix)
{
    var viewData = new ViewDataDictionary(helper.ViewData);
    var htmlPrefix = viewData.TemplateInfo.HtmlFieldPrefix;
    viewData.TemplateInfo.HtmlFieldPrefix += !Equals(htmlPrefix, string.Empty) ? $".{prefix}" : prefix;
    return helper.Partial(partialViewName, viewData);
}