사용자가 자신의 계정에 주소를 추가 할 수있는 섹션이 있습니다. 그들은 필요한만큼 (선적, 청구서 발송 등) 추가 할 수 있습니다..NET MVC 여러 버전의 동일한보기가 하나의보기에 있음
주소를 추가 한 후 사용자는 "저장"및 "삭제"버튼이있는 업데이트 양식으로 주소를 볼 수 있도록 설정했습니다. 사용자는 자신이 추가 한 주소를 조정할 수 있습니다.
내가 겪고있는 문제는 유효성 검사에 있습니다. Line 1이 필요하다고 가정 해 보겠습니다. 세 번째 주소 중 두 번째 주소를 업데이트하고 Line 1을 비워두면 컨트롤러가 오류를 발생시킵니다 (BTW Nerd Dinner와 동일한 기술 사용). 이것은 좋다. 나쁜 점은보기에 나열된 모든 주소의 주소 정보가 모두 오류가 발생한 주소의 값으로 표시된다는 것입니다.
나는이 모델 바인딩을 함께 할 수있는 뭔가가 알고 있지만, 다음과 같이 폼 데이터가 설정 될 때 나는 혼란 스러워요 :
<%= Html.TextBox("Line1", Model.Address.Line1)%>
에 전달되는 모델은 우리가 주소에 고유 한 클라이언트 주소 목록에 있습니다. "Model.Addres.Line1"의 값이 ModelState ModelErrors 컬렉션의 데이터로 대체되는 이유가 확실하지 않습니다. 기본 동작은 오류 컬렉션에서 값을 사용할 때 사용하는 것입니다. 보기에 둘 이상의 양식이 있고 양식이 다른 양식의 각각과 같이 입력 필드에 동일한 이름을 사용하는 경우 이는 문제점입니다.
여기서 HTML 도우미 기능을 사용하고 HTML로 입력을 하드 코딩하는 유일한 방법은 무엇입니까?
각 주소마다 별도의 양식이 있습니다. 필자가 고유 한 ID로 필드 이름을 시작하면 컨트롤러에서 업데이트 할 모델 바인딩이 손실됩니다. BTW, 유효성 검사 오류가없는 경우 업데이트가 성공적으로 수행됩니다. 오류가 발생할 때만 문제가 발생합니다. – mikerennick
예, 자동 모델 바인딩이 손실됩니다. 그것을 유지하려면 3 개의 모델 바인딩 (둘 중 항상 null이 됨)이 있어야합니다. 바인딩에 대한 접두사 옵션도 있습니다. 또는 두 가지 작업을 수행 할 수 있습니다. a) 제출 된 양식에 대해 validationMessage() 만 표시합니다. 제출되지 않은 주소에 대해서는 validationMessage()를 호출하지 마십시오. 그래도보기가 조금 엉망이 될 것입니다. b) Html.TextBox()는 동일하게 유지하지만 ValidationMessage()에만 접두사를 추가합니다. 컨트롤러에서 무언가를 수행하여 viewstate에서 유효성 검사 오류의 이름을 바꿉니다. 또한 지저분 해. –