AJAX发布到asp.net MVC控制器方法不起作用

时间:2013-04-16 07:48:28

标签: ajax asp.net-mvc asp.net-mvc-3 jquery

我的控制器中有这个方法:

[HttpPost]
public ActionResult Create(StatusMessage statusMessage, int foreignKey, int statusMessageType)
{
    //Do something
}

这就是我的StatusMessage模型的样子:

public abstract class StatusMessage 
{
    [Key]
    public int Id { get; set; }

    /// <summary>
    /// Message
    /// </summary>
    /// [Required]
    public string Description { get; set; }

    public DateTime CreationDate { get; set; }

    public int UseraccountId { get; set; }
    public virtual Useraccount Useraccount { get; set; }
}

我想通过jquery ajax向我的控制器发送帖子:

function sendForm(message, foreignKey, statusMessageType, target) {
    var statusMessage = {
      Description: "This is a test message"
    };
    $.ajax({
        url: target,
        type: "POST",
        contentType: 'application/json',
        data: JSON.stringify({
            statusMessage: statusMessage,
            foreignKey: foreignKey,
            statusMessageType: statusMessageType
        }),
        success: ajaxOnSuccess,
        error: function (jqXHR, exception) {
            alert(exception);
        }
    });
}

但POST未正确发送。 通过测试,我发现问题是StatusMessage类。如果我用字符串替换它,一切正常。

2 个答案:

答案 0 :(得分:1)

为什么您将类定义为 abstract ,控制器将无法创建其实例

将您的课程定义为

 public class StatusMessage

获取信息http://www.codeproject.com/Articles/6118/All-about-abstract-classes

答案 1 :(得分:0)

您的ajax帖子无效,因为 StatusMessage是一个抽象类而您(或控制器)无法创建它的实例。您应该将其作为具体类或从中派生另一个类。