2011-12-06 59 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调用的一切以及为什么它可能会失败。 –