2013-04-16 38 views
0

我有我的控制器这个方法:AJAX后到ASP.NET MVC控制器的方法不灵

[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的阿贾克斯发送一篇文章到我的控制器:

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); 
     } 
    }); 
} 

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

回答

0

您的ajax文章不工作,因为StatusMessage是一个抽象类并且您(或控制器)无法创建它的一个实例。你应该让它成为一个具体的类或从中派生出另一个类。

+0

这有一定的技术背景。 这是一些具体状态消息类的基类。 要确定我希望使用statusMessageType的状态消息。 希望这可以以某种方式工作。 – mosquito87

+0

正如我所建议的那样,为什么不创建具体类型的具体类(例如FailedStatusMessage,SuccessStatusMessage)? –

+0

我基本上只想创建一个状态消息(公司状态消息,项目状态消息)的唯一方法。 – mosquito87

1

为什么你定义了你的类为抽象,控制器将不能创建它的实例

定义你类作为

public class StatusMessage 

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

+0

这有一些技术背景。 这是一些具体状态消息类的基类。 要确定我希望使用statusMessageType的状态消息。 希望这可以以某种方式工作。 – mosquito87

+0

您应该根据消息类型创建派生类 – Satpal