2009-11-05 5 views
0

안녕하세요, 내 컨트롤러에서 작업이 있습니다. ModelBinder가 내 작업 매개 변수에 들어오는 postdata를 바인딩 할 때까지 기다리는 중입니다.하지만이 작업은 매개 변수로 전달됩니다. 나는 수동으로 그것들을 TryUpdateModel()과 묶는다. 그러나 그것을 사용하고 싶지 않다. 속성 이름과 postdata는 바인딩 할 수없는 이유는 무엇입니까? 내 행동에 데이터를 전송ModelBinder가 값을 바인딩하지 않습니다.

public class User 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 
} 

public ActionResult Update(User user) 
{ 
    // TODO 
} 

내 자바 스크립트 코드 : 귀하의 요청의 페이로드는 JSON 객체이기 때문에

newData = { 
    "FirstName":"Yucel" 
    "LastName": "Akpınar", 
    "Email": "yucelakpinar", 
    "Password": "123456" 
}; 

    $.ajax({ 
     type: "POST", 
     dataType: "json", 
     data: newData, 
     url: "/Profile/Update", 
     success: function() { 
      debugger; 
     } 
    }); 

답변

0

가 작동하지 않는 이유는 인 현재 모델 바인더는 파싱 할 수 없습니다 (실제로 모델 바인더는 값을 검색하지 않고 값 공급자가 검색합니다). 우리는 v2에서이 시나리오를 가능하게 만들었지 만 v1에서 작동하려면 직접 지원을 추가해야합니다.

+0

... NotValid 상황이있는 경우 ModelBinder를이 속성을 결합 나던 속성 성공적으로 실행되었지만 다른 작업에서는 그렇지 않습니다. S MVC v2p2를 사용 중입니다. – Yucel

0

문제가 해결되었습니다. 그 이유는 ModelState가 유효하지 않기 때문입니다. 때문에 검증의

는 값을 결합 ModelBinder를, 내가 JSON으로 데이터를 전송하는 다른 동작 방법에 대해 같은 일을하고 있어요

[MetadataType(typeof(UserMetaData))] 
public partial class User 
{ 
    public string FirstName { get; set; } 
    .... 
    .... 
} 

public class UserMetaData 
{ 
    [Required] 
    [RegularExpression("[a-zA-Z]{2,30}")] 
    public string FirstName { get; set; } 
    .... 
    .... 
관련 문제