0

は、私は2つの部分図_viewA_viewBと2つの関連するモデルModelAModelBを持っていると言います。

ASP.NETコア - ASP.NET MVCのコアプロジェクトでTagHelper、部分的なビューとプロパティ名の競合

両方ModelAModelBMyPropertyと呼ばれる性質を持っていると言います。 _viewA_viewBの両方で、asp-for="MyProperty"を使用します。

私のページは、同じIDを持つ2つのhtml要素で終わることが問題です。
どうすれば避けることができますか?

MyPropertyの名前を変更したくないことに注意してください。私のモデルはUIの制約を気にするべきではないからです。

+0

パーシャルを使用しないでください - 'EditorTemplates'を使用する(ただし、パーシャルを使用しない場合は、' HtmlFieldPrefix'を渡す必要があり - [この答え]を参照してください(https://stackoverflow.com/questions/29808573/ 29809907#29809907)例: –

+0

これはちょっと!私はPartialForを少し更新しなければなりませんでした。 –

+0

asp.net-core-mvcのデュプリを見つけようとしましたが、できませんでしたので、修正したコードで自分の答えを追加したいかもしれません。 –

答えて

1

Tksから@stephen-mueckeと同様にpostHtmlFieldPrefixでこの問題を解決しました。ここでは、@html.PartialFor("_viewA", "viewAPrefix")で使用される.Netコアで機能する拡張メソッドがあります。次に、部分ビュー内のすべての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); 
}