0

엔티티 프레임 워크와 MVC가 db의 값을 업데이트하는 데 사용할 HTML 요소를 결정하는 방법에 대해 약간 혼란 스럽습니다. 데이터베이스에서 표시 할 모델로 데이터를 가져올 수 있지만 HTML/JS에서 사용자 정의 인터페이스를 만들고 DOM 또는 JS 객체에서 업데이트 할 값을 가져 오는 방법은 무엇입니까? 필자는 업데이트 할 수있는 모델의 데이터 (목록)를 가지고 있지만, 작동시키기 위해 모든 것을 연결하는 방법을 모르겠습니다.Javascript에서 엔티티 프레임 워크로 데이터베이스를 업데이트하는 방법

+0

사용자 인터페이스에 의해 양식을 말하고, 기입 할 클라이언트 세부 사항을 말하고 싶습니까? 그냥 아약스를 사용하십시오. –

답변

1

MVC에는 "모델 바인딩"이라는 개념이 있습니다. 본질적으로 규칙을 기반으로 게시 된 데이터를 바인드 할 객체 또는 객체 계층 구조를 미러링하는 이름을 가진 필드 세트를 생성합니다. 이 같은 작업이있는 경우 예를 들어, :

public ActionResult Create(Foo foo) 

그리고 Foo는 속성, Bar을 가지고, 당신은 이름이 "바"와 형태의 입력이있을 것이다. 이 작업에 게시되면 모델 바인더는 게시 된 데이터의 이름을 적절한 명명 된 속성과 일치시키고 값을 게시 된 값으로 설정합니다. 유형이 다른 유형으로 구성된 경우 .을 사용하여 특성을 연결하십시오. 예를 들어 Bar 자체가 속성이 인 클래스 인 경우 입력 이름은 "Bar.Baz"입니다. 목록 유형의 경우 'Bars [0] .Baz'와 같은 인덱서를 추가하십시오. MVC에서 제공

HtmlHelper 확장하지만, 당신이 명명 로직 알아서, 그래서 같은 것을 통해 일반적으로 더 폼 입력을 쉽게 만들 수있다 : 수동으로 만들려고하기보다는

@Html.TextBoxFor(m => m.Bar) 

올바른 이름의 HTML 입력.

중요한 것은 목록 유형에 대해 모델 바인더는 값이 될 수있는 값 (예 : List<T> 또는 T[])에만 값을 바인딩 할 수 있습니다. ICollection<T>과 같은 항목은 색인을 생성 할 수 없으므로 작동하지 않습니다. 일반적으로 컬렉션을 사용하여 작업 할 때는보기 모델을 사용해야하므로 모델 바인더에서 사용할 수있는 목록 형식과 매핑 할 수 있고 컬렉션에 사용할 형식 인 Entity Framework ICollection<T>을 매핑 할 수 있습니다. 즉, 뷰 모델은 데이터가 데이터베이스에 어떻게 들어가는 지 생각하도록 요구함으로써 모든 잠재적 인 문제를 무효화하므로 관계없이 좋은 연습입니다.

관련 문제