id
및 name
특성을 변경해야한다고 생각합니다. 뷰 모델을 사용하고 있지 않습니다. 제대로보기 모델을 사용하는 경우 편집기 템플릿이 이미 적절한 값을 생성하기 때문에, 당신은 변경 이름과 ID에 필요하지 않습니다
@Html.EditorFor(x => ViewBag.NestedFormDatas)
: 어쨌든
@Html.EditorFor(x => x.NestedFormDatas)
을 다음은 너무 잘못된 것 같습니다 한 가지 가능성은 주어진 유형에 대한 사용자 정의 편집기 템플리트를 작성하는 것입니다. 그래서 우리는 NestedFormDatas
당신이 the default one을 무시하고 추가 속성을 지정할 수 있도록 다음과 같은 ~/Views/Shared/EditorTemplates/String.cshtml
편집기 템플릿을 추가 할 수있는 문자열 형식이라고 가정하면 : 마찬가지로 지금까지와 같은
@Html.EditorFor(x => x.NestedFormDatas, new { id = "foo" })
을 : 다음
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
ViewData
)
하고 name
속성과 관련하여 이는 TextBox
도우미로 재정의 될 수있는 것이 아닙니다. 당신은 당신이 그것을 달성 할 필요가 있다면 당신 자신의 도우미를 써야 할 것입니다. 그러나 뷰 모델을 사용하면 결코 그렇게 할 필요가 없다고 말했듯이, 뷰 모델의 목적은 정확하게 주어진 뷰의 요구 사항과 일치하기 때문입니다.
코드에서 ViewBag
의 흔적을 제거하고 뷰 모델을 정의하기 시작하십시오. 얼마나 재미 있고 쉬운 ASP.NET MVC가 될지 알게 될 것입니다.
저는 ViewModel을 사용하는 것에 일반적으로 동의하지만 모델이 맞지만보기를 만드는 데 사용하는 방법이 약간 정통이기 때문에 내가 왜 적합하지 않은지에 대한 이유가 있습니다. 설명하기가 어렵습니다. 기본적으로 내보기에서 다른 편집기 템플릿 내에있는 다른 영역으로 개체 목록을 이동하도록 선택했습니다. 이것은 사용자 관점에서 의미가 있지만 코드 내에서 ID 필드를 수정하여 게시 된 모델에 다시 연결해야합니다. –
내 ID가 'DesiredPrefix_0__NestedFormData_0__Property'가되어야합니다 이전에 'NestedForm_0__NestedFormData_0__Property'였습니다 이 경우 DesiredPrefix는 모델의 다른 목록입니다. –