Ajax 当向MVC控制器发布json stringify对象时,所有布尔值都为false
我有一个简单的get控制器Ajax 当向MVC控制器发布json stringify对象时,所有布尔值都为false,ajax,asp.net-mvc-4,post,stringify,Ajax,Asp.net Mvc 4,Post,Stringify,我有一个简单的get控制器 [HttpPost] public dynamic Get(UserPreferenceDto userPreference, bool onlyGlobal = false) { } 以及向其发布的AJAX查询: var userPreference = /* some complex object */ query({ type: "POST", url: that
[HttpPost]
public dynamic Get(UserPreferenceDto userPreference, bool onlyGlobal = false)
{
}
以及向其发布的AJAX查询:
var userPreference = /* some complex object */
query({
type: "POST",
url: that.setting.host + "UserPreference/Get",
cache: false,
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({ userPreference: userPreference, onlyGlobal: 'true' })
}).done(function (result) {
console.log(result);
}).fail(function (result) {
console.log(result);
});
当我调试时,控制器上的userPreference是正确的,但是onlyGlobal bool总是false
我几乎什么都试过了:
data: JSON.stringify({ userPreference: userPreference, onlyGlobal: 'true' })
data: JSON.stringify({ userPreference: userPreference, onlyGlobal: true })
data: JSON.stringify({ userPreference: userPreference, onlyGlobal: "TRUE" })
data: JSON.stringify({ userPreference: userPreference, onlyGlobal: 1 })
data: JSON.stringify({ userPreference: userPreference, onlyGlobal: '1' })
data: JSON.stringify({ userPreference: userPreference, onlyGlobal: "1" })
data: { userPreference: JSON.stringify(userPreference), onlyGlobal: true })
data: "?userPreference=" + JSON.stringify(userPreference)+"&onlyGlobal=true"
我的东西快用完了,我可以试着把那个愚蠢的布尔值作为“真”传递给控制器。无论我向复杂对象添加了多少数据,它都是正确的
有什么想法吗
更新
我认为我正在努力做的是不可行的。MVC可以找出一个基本类型列表,也可以找出一个复杂对象。
如果不提供一个定制的活页夹,它就不能同时做到这两个方面,这是一个遗憾,因为它看起来相对简单。如果有人知道解决方法,或者可以提供一个简单的活页夹来处理它,请继续,我会接受你的回答我也有同样的问题,我不知道这有什么问题,但在我的情况下,我改变了方法并发布了如下数据 局部视图
<script>function GetPostalAddress() {
var PostalAddress = {};
PostalAddress.CountryID = _("CountryID");
PostalAddress.CityID = _("CityID");
PostalAddress.ProvinceID = _("ProvinceID");
PostalAddress.ZipCode = _("ZipCode");
PostalAddress.StreetAddress = _("StreetAddress");
return PostalAddress;
}</script>
函数GetPostalAddress(){
var PostalAddress={};
PostalAddress.CountryID=U8;(“CountryID”);
PostalAddress.CityID=uU8;(“CityID”);
PostalAddress.ProvinceID=u(“ProvinceID”);
PostalAddress.ZipCode=uu(“ZipCode”);
PostalAddress.StreetAddress=uu(“StreetAddress”);
退回邮资;
}
对于使用这些局部视图的窗体
您还将包括ajax函数
希望不会太晚,并且会有所帮助。为什么要使用此参数声明?-
bool onlyGlobal=false
这只是可选的默认声明,因此有人可以通过只传递一个参数来调用控制器方法。您应该将其设置为可选-bool?只有全局
@Manoz不作为问题,Op使用可选参数,因为bool?使其可为空。不一样。使用默认值,您可以只使用一个参数来声明方法:Get(userPreference)。无论如何,我不认为默认值有任何区别,因为如果我只声明bool onlyGlobal,我也会遇到同样的问题