2013-04-16 36 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