2013-03-04 2 views
0

.NET 4.5에서 추가 된 ASP.NET 양식 모델 바인딩을 사용하고 있습니다. 필자는 모델 바인딩에 대해 많은 것을 배워서 더 쉽게 작성하고 작성해야하는 코드의 양을 줄이는 방법을 알아 냈습니다. 그러나 수동으로 항목을 업데이트 할 수있는 방법이 있는지 알고 싶습니다. 나는이 할 수있는 능력이 좋아, 할ASP.NET 4.5 모델 바인딩 업데이트 사용자 정의

public void UpdateEquipment(int Id) 
{ 
    var equip = EquipCondContext.Equipments.Single(x => x.Id == Id); 
    TryUpdateModel(equip); 
} 

을 :하지만 내가 더 매뉴얼을 할 수있는 방법이 있나요

public void UpdateEquipment(int Id) 
{ 
    var equip = EquipCondContext.Equipments.Single(x => x.Id == Id); 
    //equip.Description = A TextBox.Text on that row that I just saved in my list. 
    EquipCondContext.SaveChanges(); 
} 

나는 TryUpdateModel 방법과 같이 발견 그런 종류의 업데이트?


다음은 예제 시나리오입니다. 사용자가 사용자 ID를 입력하는 행에 텍스트 상자가 있지만 업데이트시 배지 번호를 실제로 설정하려고합니다. 내 업데이트 기능에서 먼저 지정된 사용자 ID의 배지 번호를 가져온 다음 해당 컨텍스트를 저장하기 전에 내 엔터티에서이 속성을 설정하는 쿼리를 수행하려고합니다.

+1

두 번째 예에서는 모델 바인딩이 필요하지 않습니다. – Nenad

+0

달성하고자하는 것을 보여 주면 상황을 더 명확하게 만들 수 있습니다. 왜 수동으로 업데이트 하시겠습니까? – magnattic

+0

두 번째 예제가 작동합니다. TryUpdateModel은 모델'equip'과 기본 값 공급자 (Form, Querystring 등)를 사용하고 모델에서 이름을 일치시켜 값을 설정하려고 시도합니다. – Joe

답변

0

텍스트 상자의 변경 내용을 수동으로 추적하려면 Textbox.TextChanged event을 청취해야합니다.

<asp:Textbox ... OnTextChanged="MyTextBoxOnTextChanged" /> 

여기서 원하는 텍스트 상자 값으로 할 수 있습니다. 케이스에 장비 설명으로 저장하십시오.

1

모델 바인딩 프로세스에 연결하고 값을 저장하기 전에 변경하려고합니다. MVC에서 같은 일이 같은,하지만 당신은이 문서 시도해 볼 수도 있습니다 : 나는 웹 양식에 바인딩 모델이 1이면 확실하지 않다

http://www.markeverard.com/2011/07/18/creating-a-custom-modelbinder-allowing-validation-of-injected-composite-models/

기사는 검증에 관한 것입니다,하지만 당신은 그냥 쉽게 변경할 수 거기 값.

기본적으로 클래스에 대한 사용자 지정 ModelBinder를 등록한 다음 모델을 바인딩하기 위해 호출에 연결합니다.