속성이있는 모델이 있는데 그 중 하나는 컬렉션입니다.요소없이 JS를 사용하여 양식 값 게시 하시겠습니까?
일부 값으로 해당 컬렉션을 설정하는 클라이언트 JS 함수가 필요합니다 (또는 별도의 매개 변수를 통해 컨트롤러 작업에 보내거나 모델 바인더를 통해 실제로 알지 못합니다).
어떻게 가능합니까?
속성이있는 모델이 있는데 그 중 하나는 컬렉션입니다.요소없이 JS를 사용하여 양식 값 게시 하시겠습니까?
일부 값으로 해당 컬렉션을 설정하는 클라이언트 JS 함수가 필요합니다 (또는 별도의 매개 변수를 통해 컨트롤러 작업에 보내거나 모델 바인더를 통해 실제로 알지 못합니다).
어떻게 가능합니까?
당신은 JSON을 사용하여 임의의 복잡한 구조를 보낼 수 :
$.ajax({
url: '/somecontroller/someaction',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
id: 123,
items: [
{ foo: 'bar 1' },
{ foo: 'bar 2' },
{ foo: 'bar 3' }
]
}),
success: function(result) {
alert('ok');
}
});
와 JSON 구조와 일치하는 뷰 모델 걸릴 것입니다 컨트롤러의 액션은 다음과 같다 : 여기
[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
...
}
및 모델 정의 매칭이있어 샘플 구조 :
public class MyViewModel
{
public int Id { get; set; }
public ItemViewModel[] Items { get; set; }
}
public class ItemViewModel
{
public string Foo { get; set; }
}
JS를 사용하여 값을 게시하지 않고 정기적으로 양식을 제출할뿐입니다. 게시 된 양식에서 모델의 컬렉션 속성을 설정하는 방법을 모르겠습니다. 아마도 위조 요소가 가장 좋은 방법 일 수 있습니다. 즉,'name' 속성이'Model.CollectionProperty [0]','Model.CollectionProperty [1]'등으로 설정된 숨겨진 요소를 생성하는 것입니까? – Shimmy
양식을 정기적으로 게시하는 경우 기본 모델 바인더가 사용하는 입력 필드에 대한 표준 명명 규칙을 준수해야합니다. http://haacked.com/archive/2008/10/23/model-binding-to-a -list.aspx 숨겨진 필드를 사용하려는 경우'@ Html.HiddenFor (x => x.CollectionProperty [index] .SomeSubProperty)'와 같이 생성 할 수 있습니다. –
참고 용으로 답안에 의견을 포함 시키면 좋을 것입니다. – Shimmy
네, 가능합니다.이 경우 jav ascript 및 url의 값을 캡처하거나 backbonejs를 사용하는 함수를 만들면이 태그는 이미 이런 종류의 것을 제공합니다 (http://backbonejs.org/#Router) –
어떻게 답변을 게시 할 수 있습니까? 모델 바인딩은 어떻습니까? – Shimmy