2012-01-09 4 views
2

더 나은 용어가없는 가장 깨끗한 ASP.NET MVC3 방법은 유한 카운트 모음을 모델링하고 웹 양식을 사용하여 표시하는 것입니다. 면도칼?고정 길이 배열이있는 모델에 대한 ASP.NET MVC3 EditorFor

모델에 List를 던져서 뷰에서 반복 할 수 있다고 생각하지만 EditorFor가 자동으로 EditorFor에 원하는 수의 텍스트 상자를 렌더링하지 않습니다.

면도기 뷰와 함께 작동하는 뷰 모델을 자동으로 작성하여 컬렉션에 원하는 항목의 개수를 정확하게 알려주므로 자동으로 올바른 형식의 양식 요소를 렌더링 할 수 있습니까?

+0

'foreach'구문에 대해 마음에 들지 않는 점은 무엇입니까? – Rondel

+0

나는 그것을 좋아하고, 더 좋은 방법이 없다면, 그것은 정확히 내가 사용할 것입니다. 내 질문은, EditorFor를 사용하여 고정 된 길이의 배열이나 유한 양의 컬렉션 인 모델로 와이어 링하는 더 이상 자동적 인 방법이있어서 뷰가 자동으로 양식 요소를 올바르게 표시하도록하는 것입니다. 그래서 제 경우에는 정확히 다섯 개의 텍스트 상자를 통해 정확히 다섯 번의 급여를 받아야합니다 ... – tnktnk

답변

1

우리가 간단한 데이터 유형의 작은 숫자에 대해 이야기하고 있다면, 사실 (대답은 가장 듣고 싶지 않지만) 항목의 각 인스턴스에 대해 모델에 단일 필드를 가져야한다는 것입니다. 따라서 5 급여의 경우 급여 1, 급여 2 등을 귀하의 모델에 보유하게됩니다.

좀 더 추상화하고 더 큰 숫자를 변경/처리하기가 어렵도록하려는 경우 몇 가지 맞춤 메타 데이터를 필드에 추가하여 원하는 값의 수를 나타낼 수 있습니다. 그런 다음, 도우미 또는 사용자 정의 템플리트 (또는 조합)가 필요하여 메타 데이터를 가져 와서 정확한 수의 입력 필드 (정확한 이름, ID 등)를 렌더링하십시오.

+0

그게 제가 처음에했던 것입니다, 급여 1, 급여 2 등. 그러나 그것은 단지 clunky하지 않습니까? 각자 똑같은 검증 로직이 필요하며, 더 많은 것들을 값의 집합으로 검증해야합니다. 일명 다섯 가지를 모두 입력해야합니다. 뷰에 대한 모델 바인딩을 자동화하려는 다른 모든 시도로이 시나리오가 간과되는 것에 놀랐습니다 ... – tnktnk

1

보기의 모델로 목록을 사용하는 것이 좋습니다. 간단하고 깨끗하며 효율적입니다.

목록을 렌더링하는 EditorFor 템플릿을 만들 수는 있지만 템플릿 시스템으로 인해 오버 헤드가 추가 된 뷰와 본질적으로 동일합니다.

+0

보기에서 유한 수의 항목 수로 목록 수를 제한하는 가장 좋은 방법은 무엇입니까? – tnktnk

+0

나는 당신의 문제를 이해하고 있는지 잘 모르겠습니다. 컨트롤러에서 전달되는 34 가지 요소 중 10 가지 요소가 필요합니까? – linkerro

1

나는 정말로 당신의 문제가 무엇인지 이해하지 못합니다. 왜 그것을 제한해야합니까? 그러나 목록에 많은 레코드를 넣는 것만으로도 렌더링 할 수 있습니다. 목록에 5 개의 레코드 만 있으면 목록에 5 개의 요소 만 포함될 수 있는지 확인하십시오. 아뇨. 당신의 견해에도 똑같이 적용됩니다.

+0

질문은 모델링하고 와이어 링하는 자동화 된 방법이 더 있는지입니다. 나는 숫자를 정확히 5로 제한 할 이유가 없다는 것을 내 애플 리케이션을위한 스펙을 작성하는 사람들에게 말하지 않을 것이다. 아주 좋은 이유가 있습니다. 이 웹 양식의 목적이 무엇인지 알 필요가 없으므로 실마리가 없습니다. 대답이 더 이상 자동화 된 방법이 없다면, 괜찮다고 말하면 그것을 받아 들일 것입니다. – tnktnk

관련 문제