昨晚我试图整理自 MVC2 以来我一直在工作的东西。
给定以下课程:
public class RouteSaveViewModel
{
public string Title { get; set; }
public string Comments { get; set; }
public string DepartureDate { get; set; }
public string ArrivalDate { get; set; }
public List<int> LocationIds { get; set; }
}
...以及以下操作:
[HttpPost]
public ViewResult SaveRoute(RouteSaveViewModel route)
{
// yada yada
return SomethingShiny();
}
我想使用 $.ajax 或 $.post 传递数据。该表单是从用户那里收集数据并提交的多步骤。我用来构建位置 ID 的代码是这样的:
var routeStopIds = [];
$(".route-stop").each(function(){
routeStopIds.push($(this).attr('data-id'));
});
我已经通过浏览器内的开发工具和提琴手验证了我期望的 id 在这个数组中。最后,为了提交数据,我正在绘制对象,就像我在以前的 MVC 构建中所做的那样:
$.ajax({
type: 'post',
url: postUrl,
data: {
Title: $("#route-title").val(),
Comments: $("#route-description").val(),
DepartureDate: depDate,
ArrivalDate: arrDate,
LocationIds: routeStopIds
},
dataType: 'JSON'
});
我看到的是所有数据 - 除了LocationIds
参数之外的所有数据都已填充。我还尝试仅将数组提交给仅接受 a并且似乎也不起作用routeStopIds
的修改后的数组。无论哪种方式,都为空,尽管请求的表单参数中有一个表单编码值。SaveRoute
List<int>
LocationIds
{LocationIds%5b%5d=44&LocationIds%5b%5d=4&LocationIds%5b%5d=2}
...然而 HttpValueCollection 只是LocationIds[]
一个空数组。
那么,我是否遗漏了一些明显的东西?也许不那么明显?如何让模型绑定获取数组?