2012-02-17 1 views
0

MVC3 웹 응용 프로그램에서 작업 중이며 AJAX를 사용하여 모델에서 값을 작업으로 다시 전달할 때 문제가 발생합니다. IMVC3 TextBox의 값 변경에 대한 모델 속성 업데이트

1)이 뷰 2) 수량 텍스트 상자 3) 변경에 탐색 할 때

내가 모델로를 통과 할 때 내가 얻을로

내가 "수량"에 대해 동일한 가치를 저장 명중 보기. 나는 Model이 Textfield와 동기가 될 것으로 기대하지만, apperently 그들은 그렇지 않다. 동기화 할 모델 또는 ActionLink에 새로운 "수량"값을 가져 오는 다른 방법이 필요합니다.

- 해결책 : 기본적으로

나는 Html.BeginForm 기능을 사용하고 Ajax.ActionLink를 호출했기 때문에 내 FormCollection이었다 업데이트되지 않은 이유

. 이들은 함께 잘 작동하지 않습니다. Ajax.BeginForm으로 변경하면 업데이트 된 FormCollection을 성공적으로 반환 할 수있었습니다.

(가 많이 리팩토링하고 인식 할 수없는되어 있기 때문에 내가 지금 여기에 코드를 붙여 넣을 수 없습니다)

답변

1

당신이 POST를 실행해야하는 모델을 업데이트합니다. 그런 다음 Save 메서드를 HttpPost 특성으로 장식하고 첫 번째 인수로 모델을 수락해야합니다. 프레임 워크는 당신에게 인수를 전달합니다.

다음은이 포럼의 지원 자료입니다.

ASP.NET MVC [HttpPost] action accepts single object, spits back validation errors to ViewPage<CustomViewModel>

편집

추가 더 직접적으로 아약스 ActionLink 관련 수정 된 링크 - MVC Ajax.ActionLink doesn't find POST method

+0

좋아 의미가 있습니다. 그러나 지금 뷰에서 빈 Order 객체를 다시 얻습니다. 게시 한 링크에서 [바인딩 (접두사 = "주문")]을 설정하면 null 참조가 다시 나타납니다. 어쨌든 Bind는 무엇을해야한다고 생각합니까? – AndersLindas

+0

당신은 아마 그것을 필요로하지 않으며 그것을 당길 수 있습니다. 다음은 Bind를 설명하는 게시물입니다. 특히 Prefix가 의미하는 바는 무엇인지 알려주십시오. [링크] http://stackoverflow.com/questions/1317523/how-to-use-bind-prefix –

+0

주요 문제는 모델이 입력 된 값과 동기화되지 않는다는 것입니다. 이것은 Html.ActionLink가 아니라 Ajax.ActionLink입니다. 그게 어떤 차이가 있는지 나는 모른다. 매개 변수로 orderNumber와 quantity를 명시 적으로 전달하려고하면 원래 값을 얻었고 값을 수정하지 않았습니다. – AndersLindas