内部服务器错误:将JavaScript对象传递给C#

内部服务器错误:将JavaScript对象传递给C#,javascript,c#,jquery,Javascript,C#,Jquery,我得到一个500(内部服务器错误),我不知道为什么。 我只想将一个Javascript对象传递给一个C#函数 这是Javascript函数: function validateImpact(id_dcr) { $.ajax({ type: 'POST', url: '/ModifyDocument/ImpactAssesment', dataType: 'json', data: { id: 0, quality: $("#

我得到一个500(内部服务器错误),我不知道为什么。 我只想将一个Javascript对象传递给一个C#函数

这是Javascript函数:

function validateImpact(id_dcr) {
    $.ajax({
    type: 'POST',
    url: '/ModifyDocument/ImpactAssesment',
    dataType: 'json',
    data: {
        id: 0,
        quality: $("#quality").is(":checked"),
        spares: $("#spares").is(":checked"),
        supply: $("#supply").is(":checked"),
        methods: $("#methods").is(":checked"),
        mp: $("#mp").is(":checked"),
        organization: $("#organization").is(":checked"),
        procurement: $("#procurement").is(":checked"),
        logistic: $("#logistic").is(":checked"),
        health: $("#health").is(":checked"),
        software: $("#software").is(":checked"),
        details: $("#details").val(),
        id_dcr: id_dcr
    },
    success: function (data) {
        alert(data);
    },
    error: function (xhr, ajaxOptions, error) {
        alert(xhr.status);
        alert('Error: ' + xhr.responseText);
    }
});
这是将在JavaScript函数中调用的C#方法定义:

[HttpPost]
public ActionResult ImpactAssesment(Impact impact){ 
    //Do something 
    return RedirectToAction("Index", "ModifyDocument");
}
这是C#类名称“影响”:


看起来您使用的是MVC控制器(而不是web api),因此您应该删除
数据类型:“json”
选项看起来您使用的是MVC控制器(而不是web api),因此,您应该删除
数据类型:“json”
选项

impactAssessment
不会返回任何代码不应该返回的内容compile@Dalorzo是的。它正在返回:返回重定向到操作(“索引”、“修改文档”);调试AJAX请求时要做的第一件事;检查控制台的网络选项卡,查看请求的状态以及它发出的错误消息。我同意您确实需要使用chrome开发工具来查看传递的结构。在错误页面上盲目飞行肯定会产生最小的结果,并且需要花费大量时间来解决Fiddler。。。它将(非常容易)向您提供ajax调用很难获得的响应的详细信息(这样您就可以看到返回的错误页面——通常只足以向正确的方向启动)。(离不开它)
impactAssessment
不会返回任何代码不应该返回的内容compile@Dalorzo是的。它正在返回:返回重定向到操作(“索引”、“修改文档”);调试AJAX请求时要做的第一件事;检查控制台的网络选项卡,查看请求的状态以及它发出的错误消息。我同意您确实需要使用chrome开发工具来查看传递的结构。在错误页面上盲目飞行肯定会产生最小的结果,并且需要花费大量时间来解决Fiddler。。。它将(非常容易)向您提供ajax调用很难获得的响应的详细信息(这样您就可以看到返回的错误页面——通常只足以向正确的方向启动)。(不能没有它)虽然这可能有帮助,但不会导致500个错误。调试的第一条规则:当你不知道哪里出了问题时,你首先修复你知道的不正确的地方。@Rorymcrossan嗯,OP至少应该包含堆栈跟踪,但我在WCFW中遇到过这种错误,尽管这可能有帮助,调试的第一条规则是:当你不知道什么地方出错时,你首先修复你知道的不正确的地方。@Rorymcrossan嗯,OP至少应该包含堆栈跟踪,但我在WCF中遇到过这种错误
public partial class impact
{
    [Key]
    public int id { get; set; }

    [Required]
    public bool quality { get; set; }

    [Required]
    public bool spares { get; set; }

    [Required]
    public bool supply { get; set; }

    [Required]
    public bool methods { get; set; }

    [Required]
    public bool mp { get; set; }

    [Required]
    public bool organization { get; set; }

    [Required]
    public bool procurement { get; set; }

    [Required]
    public bool logistic { get; set; }

    [Required]
    public bool health { get; set; }

    [StringLength(1073741823)]
    public string details { get; set; }

    [Required]
    public bool software { get; set; }

    [Required]
    public int id_dcr { get; set; }

    [ForeignKey("id_dcr")]
    public virtual dcr dcr { get; set; }
}