0
중첩 된 뷰 모델 (ChildViewModel)을 사용하여 viewmodel (MasterViewModel)을 가지고 있고 jQuery를 통해 ajax 게시를 수행하는 양식 내에 dropdownlist가 있습니다. 부분보기. 하지만 내가하는 일과 관계없이, Part 액션의 childview 모델은 항상 비어 있습니다. 그 이유를 이해하지 못합니다. Heres는 간단한 코드 예제 :html.beginform에서 중첩 된 viewmodel을 전달합니다.
컨트롤러 :
Namespace MvcApplication2
Public Class TestController
Inherits System.Web.Mvc.Controller
'
' GET: /Test
Function Index() As ActionResult
Dim viewModel As New MasterViewModel
viewModel.MyId = 123
viewModel.ChildViewModel = New ChildViewModel With {.Name = "woohoo"}
viewModel.Items = New List(Of SelectListItem) From { _
New SelectListItem With {.Text = "first", .Value = "1"},
New SelectListItem With {.Text = "second", .Value = "2"}
}
viewModel.SelectedItem = New List(Of SelectListItem) From { _
New SelectListItem With {.Text = "first", .Value = "1"}
}
Return View(viewModel)
End Function
Function Part(ByVal viewModel As ChildViewModel) As ActionResult
viewModel.Name = viewModel.Name & "_"
Return PartialView(viewModel)
End Function
End Class
End Namespace
색인보기 :
@ModelType MvcApplication2.MasterViewModel
@Code
ViewData("Title") = "Index"
End Code
<script type="text/javascript" language="javascript">
function update() {
$('#myForm').change(function() {
var form = $('#myForm');
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
success: function (result) {
$('#mjoo').html(result);
}
});
});
}
</script>
<h2>Index</h2>
<p>@Model.MyId</p>
@Using Html.BeginForm("Part", "Test", FormMethod.Post, New With {.id = "myForm"})
@Html.DropDownListFor(Function(x) x.SelectedItem, Model.Items, New With {.onchange = "update()"})
@Html.HiddenFor(Function(x) x.ChildViewModel)
End Using
<div id="mjoo">
@Html.Partial("Part", Model.ChildViewModel)
</div>
부품보기 :
@ModelType MvcApplication2.ChildViewModel
<p>@Model.Name</p>
Viewmodels :
Public Class MasterViewModel
Property ChildViewModel As ChildViewModel
Property Items As List(Of SelectListItem)
Property SelectedItem As List(Of SelectListItem)
Property MyId As Integer
End Class
Public Class ChildViewModel
Property Name As String
End Class
무엇이 잘못되었을 수 있습니다. 나는 실종 된 것이 있다는 것을 알고 있지만 나는 그것을 볼 수 없다.
좋아요, 훨씬 좋습니다. 목록에있는 속성에 여전히 문제가 있습니까? – MowgliMango
Btw, 나는 15 명의 담당자가있을 때까지 대답을 upvote 할 수는 없지만 다시 올 것이다. – MowgliMango
@Mowgli : 목록을 HTTP POST의 컨트롤러로 다시 전달하는 대신 데이터베이스에서 가져 오는 것이 좋습니다. 그렇지 않은 경우 http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/을 참조하십시오. – SLaks