gpt4 book ai didi

javascript - 模型绑定(bind)器未拾取表单编码的 Javascript int []

转载 作者:行者123 更新时间:2023-11-29 10:21:28 25 4
gpt4 key购买 nike

昨晚我试图将自 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'));
});

我已经通过浏览器内开发工具和 fiddler 验证了我期望的 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参数已填充。我也试过只提交 routeStopIds数组修改为 SaveRoute只接受 List<int>这似乎也没有用。无论哪种方式,LocationIds为空,尽管在请求的表单参数中有一个表单编码值。

{LocationIds%5b%5d=44&LocationIds%5b%5d=4&LocationIds%5b%5d=2}

...然而 HttpValueCollection 只是 LocationIds[] , 一个空数组。

那么,我是否漏掉了一些明显的东西?也许不那么明显?如何让模型绑定(bind)拾取数组?

最佳答案

还记得我说我从 MVC2 开始就开始工作的那部分吗?是的,就是在这里: Advanced Model Binding在那篇文章中,我明确提到了以下内容:

Note: In order to make the results of the array compatible with the binding mechanism in ASP.NET MVC (as at MVC 2.0) we need to use the ‘traditional’ setting in $.ajax().

修改 ajax 调用以包含此设置是解决方法。一切都很好,就像雨水和柔软的羊毛小猫一样。或者连指手套之类的。

        $.ajax({
type: 'post',
url: postUrl,
traditional: true, // <----- here be kittens
data: {

Title: $("#route-title").val(),
Comments: $("#route-description").val(),
DepartureDate: depDate,
ArrivalDate: arrDate,
LocationIds: routeStopIds
},
dataType: 'JSON'
});

关于javascript - 模型绑定(bind)器未拾取表单编码的 Javascript int [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com