Javascript 从AJAX调用到C#控制器的参数在不同的机器上映射不同
我使用jquery ajax调用C#controller的方法,这里是controllers方法:Javascript 从AJAX调用到C#控制器的参数在不同的机器上映射不同,javascript,c#,jquery,ajax,Javascript,C#,Jquery,Ajax,我使用jquery ajax调用C#controller的方法,这里是controllers方法: public ActionResult AddRegion(string pageIdIn, string fieldIdIn, RegionMV regionMv) { var fieldRegFormDataOutMv = batchLogic.AddRegion(Session.SessionID, pageIdIn, fieldIdIn, regio
public ActionResult AddRegion(string pageIdIn, string fieldIdIn, RegionMV regionMv)
{
var fieldRegFormDataOutMv = batchLogic.AddRegion(Session.SessionID, pageIdIn, fieldIdIn, regionMv);
var json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(fieldRegFormDataOutMv);
return Json(json, JsonRequestBehavior.AllowGet);
}
以下是ajax调用代码:
function AjaxWrapper(param, url, success, failure, deferred, args) {
return $.ajax({
type: "POST",
url: url,
data: param,
// contentType: "application/json; charset=utf-8",
//dataType: "json",
success: function (data, textStatus, jqXHR) {
success(data, args);
deferred.resolve();
},
error: function (jqXHR, textStatus, errorThrown) {
// //! call the function that will pop a div in the view to tell the user something went wrong - > failure(response);
failure(textStatus);
console.log(jqXHR);
deferred.reject();
},
cache: false
});
}
下面是调用ajax方法的代码:
function addRegion(pageId, fieldId, region) {
var param = { pageIdIn: pageId, fieldIdIn: fieldId, regionMv: region };
var deferred = $.Deferred();
showProgress();
AjaxWrapper(param, window.urlsList.addRegionUrl, updateView, showError, deferred).done(function () {
hideProgress();
});
return deferred.promise();
}
问题是,在我的计算机(使用Windows 7)上,区域json被正确映射到RegionMV对象(具有所有属性和正确的边界框),但在另一台计算机上(使用Windows 10),区域的属性被正确映射到除边界框外的其他对象。
以下是课堂区域MV:
public class RegionMV
{
// Index of the region in the parent page
public string Id { get; set; }
// Region type
public RegionType Type { get; set; }
// Region bounding box
public RectMV BoundingRect { get; set; }
// Region confidence as a specific field (determined by the 'Name' property)
public int FieldConfidence { get; set; }
// Region name (filled for regions assigned to specific fields or cells)
public string Name { get; set; }
// Region text content
public string Content { get; set; }
// Region text content filtered as specific field (determined by the 'Name' property) value
public string ContentFiltered { get; set; }
}
你知道为什么会这样吗?是因为不同的操作系统(我有点怀疑,但仍然如此?)还是因为其他原因?
编辑强>
这是我的RectMV课程:
public class RectMV
{
public double X { get; set; }
public double Y { get; set; }
public double Width { get; set; }
public double Height { get; set; }
}
两台机器上的Chrome版本都相同。发布您的c#
RectMV
model不同的浏览器版本?报告确切的环境,显示序列化数据中的差异可能也很有用。我不确定这是否是您的问题,但我最近在发布带有$.ajax()
的数据时遇到了麻烦,其中请求正文没有作为JSON发送,即使内容类型显式设置为“application/JSON”
在Windows 10上,您是否尝试过其他浏览器?这可能是一个有用的测试,可以了解这是浏览器问题还是代码中的某个问题。