常量400响应,向MVC控制器发送复杂的javascript对象

常量400响应,向MVC控制器发送复杂的javascript对象,javascript,c#,ajax,asp.net-mvc,Javascript,C#,Ajax,Asp.net Mvc,又是一个MVC问题。总有一天,我会看着自己的“MVC学习日”微笑 因此,正如标题所表明的那样,切中要害;一个持续的400条回复,我已经读了很多关于SO的帖子,但似乎仍然无法让我的逻辑发挥作用。如果我能告诉你逻辑,也许有人能帮我 控制器: public JsonResult CreateExtendedProperty(ExtendedPropertyDefinitionViewModel extendedPropertyDefinitionViewModel) { //I origina

又是一个MVC问题。总有一天,我会看着自己的“MVC学习日”微笑

因此,正如标题所表明的那样,切中要害;一个持续的400条回复,我已经读了很多关于SO的帖子,但似乎仍然无法让我的逻辑发挥作用。如果我能告诉你逻辑,也许有人能帮我

控制器:

public JsonResult CreateExtendedProperty(ExtendedPropertyDefinitionViewModel extendedPropertyDefinitionViewModel)
{

   //I originally had JsonResult as ActionResult, still no change.
    var p = extendedPropertyDefinitionViewModel;

    //Temp
    //return Json(new { Success = false, ErrorMessage = "Error creating property" });
}
Ajax/Javascript:

        var extendedPropertyDefinition = JSON.stringify({
            DefinitionId: '0',
            Title: propertyInfo["Title"],
            OrganisationId: '0',
            Organisation: '',
            TypeId: propertyInfo["TypeId"],
            SortOrder: 0,
            IsEnumerated: propertyInfo["IsEnumerated"],
            AllowMultiSelect: propertyInfo["AllowMultiSelect"],
            IsDate: propertyInfo["IsDate"],
            LastUpdatedBy: "",
            LastUpdatedDateTime: new Date().toISOString(),
            CreatedBy: "",
            CreatedByDateTime: new Date().toISOString(),
            Options: {
                OptionId: '0',
                Option: '',
                OptionValue: '',
                SortOrder: 0,
                LastUpdatedBy: '',
                LastUpdatedDateTime: new Date().toISOString(),
                CreatedBy: '',
                CreatedByDateTime: new Date().toISOString(),
            }
        });

        $.ajax({
            url: "<%= Url.Action('CreateExtendedProperty', 'Organisation') %>",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            //traditional: true,
            type: 'POST',
            data: extendedPropertyDefinition,
            success: function(e) {
                alert('success');
                //Rebuild Grid? 
            },
            error: function(e) {
                alert('request failed (500)');

            }
        });
var extendedPropertyDefinition=JSON.stringify({
定义ID:“0”,
标题:propertyInfo[“标题”],
组织ID:“0”,
组织:'',
TypeId:propertyInfo[“TypeId”],
排序器:0,
IsEnumerated:propertyInfo[“IsEnumerated”],
AllowMultiSelect:propertyInfo[“AllowMultiSelect”],
IsDate:propertyInfo[“IsDate”],
LastUpdatedBy:“”,
LastUpdateDateTime:new Date().toISOString(),
创建日期:“,
CreatedByDateTime:new Date().toISOString(),
选项:{
OptionId:'0',
选项:“”,
OptionValue:“”,
排序器:0,
LastUpdatedBy:“”,
LastUpdateDateTime:new Date().toISOString(),
由“”创建,
CreatedByDateTime:new Date().toISOString(),
}
});
$.ajax({
url:“”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
//传统的:是的,
键入:“POST”,
数据:extendedPropertyDefinition,
成功:职能(e){
警惕(“成功”);
//重建网格?
},
错误:函数(e){
警报(“请求失败(500)”;
}
});
有效载荷:

希望有人能走上正确的道路,所有人都会非常感激


关于,

因此,要从评论中获得答案,您必须确保编译
。如果它位于单独的JS文件中,则必须从视图中传递它。否则可能是其他问题(如果您使用的是Razor语法,它应该类似于
@Url.Action(“CreateExtendedProperty”,“Organization”)

您的问题太模糊了,我不知道如何回答您。据我所知,你的控制器方法没有任何作用,所以我不确定它如何能产生400个响应;比任何东西都更能说明问题。确切地说,它是赤裸裸的,思想也是如此,它实际上并没有击中。请尝试删除
JSON.stringify
并传递
数据:{extendedPropertyDefinitionViewModel:extendedPropertyDefinition},
@TezWingfield是否编译了
?您的JS代码是否嵌入到CSHTML中?您是否尝试过在JS中编写url/Organization/CreateExtendedProperty'这是假设您的控制器名称是Organization,因为我们无法看到完整的控制器代码