0

ASP.NET 코어 MVC 프로젝트에서 두 부분 뷰 _viewA_viewB과 두 개의 연관된 모델 ModelA 및 이 있습니다.

ASP.NET 코어 - 태그 도우미, 부분 뷰 및 속성 이름 충돌

그리고 모두 ModelAModelBMyProperty라는 속성을 갖고 있다고. _viewA_viewB 모두 asp-for="MyProperty"을 사용합니다.

내 문제는 내 페이지가 동일한 ID의 두 html 요소로 끝나는 것입니다.
어떻게 피할 수 있습니까?

내 모델이 UI 제약 조건에 신경 쓰지 않아도되므로 MyProperty의 이름을 바꾸고 싶지 않습니다.

+0

파셜을 사용하지 마십시오 -'EditorTemplates'를 사용 (하지만 부분 지문을 사용한다면, 당신은'HtmlFieldPrefix' 전달해야 - (참조 [이 답변] https://stackoverflow.com/questions/29808573/ get-the-values-from-nested-complex-object-that-passed-of-a-partial-view/29809907 # 29809907) 예를 들어 –

+0

예를 들어 PartialFor를 약간 업데이트해야했습니다. –

+0

asp.net-core-mvc의 속임수를 찾으려고했으나 수정할 수 없으므로 수정 된 코드로 직접 답변을 추가 할 수 있습니다. –

답변

1

Tks에서 @stephen-muecke까지이 postHtmlFieldPrefix으로 문제를 해결했습니다. 다음은 @html.PartialFor("_viewA", "viewAPrefix")에서 사용할 .Net Core와 함께 작동하는 확장 메소드입니다. 부분보기 내의 모든 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); 
}