2011-12-06 63 views
0

我已經在MVC3以下動作/控制器:MVC3的CKEditor和Ajax問題

[HttpPost] 
    public ActionResult AX_AddItemResponse(ItemResponsesVM response) 
    { 
     return View(response); 
    } 

這是即時通訊使用視圖模型:我有這樣的Ajax調用應該

public class ItemResponsesVM 
    { 
     [Display(Name = "Message")] 
     [Required(ErrorMessage = "Message is required")] 
     [StringLength(250, ErrorMessage = "Please add a maximum of 250 chars")] 
     public string Message 
     { get; set; } 
    } 

對於另一方面去上述作用:使用CKEditor的以增強與ID =「消息」元件textarea的

$(document).ready(function() { 
    var form=$("#MyForm"), 
    $("#Submitbutton").click(function() { 

     $('#Message').each(function() { 
      var $textarea = $(this); 
      $textarea.val(CKEDITOR.instances[$textarea.attr('name')].getClearText()); 
     }) 
     , 
     $.ajax({ 
      type: "POST", 
      url: "@(Url.Action("AX_AddItemResponse","Responses"))", 
      data: form.serialize(), 
      success: function() { 
       alert("AllGood"); 
      } 
      , 
      error:function() 
      { 
       alert("AllBad"); 
      } 
     }); 
    }); 

}); 

IM,在p這是我的我不知道如何序列化表格以達到用ItemResponsesVM實例描述的操作

回答

2

您已經正確序列化形式:

data: form.serialize() 

只要確保你裝飾你Message屬性與[AllowHtml]屬性或ASP.NET運行時可能會拒絕該請求是否含有危險字符,如<>,...:

public class ItemResponsesVM 
{ 
    [Display(Name = "Message")] 
    [Required(ErrorMessage = "Message is required")] 
    [StringLength(250, ErrorMessage = "Please add a maximum of 250 chars")] 
    [AllowHtml] 
    public string Message { get; set; } 
} 

也有似乎是$.ajax調用,它應該是一個半之前的一些逗號(,) - 大腸菌(;)。

+0

簡直太棒了。感謝它的工作:-) – Jose3d

+0

@ Jose3d,是的,下次請使用一些JavaScript調試工具,如FireBug,因爲它告訴你關於AJAX調用的一切以及爲什麼它可能會失敗。 –