MVC3 CKEditor和Ajax问题

时间:2011-12-06 17:59:39

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

我在MVC3上有以下动作/控制器:

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

这是我正在使用的视图模型:

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

另一方面,我有这个ajax调用应该进行上述操作:

$(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");
            }
        });
    });

});

我使用CKEditor来增强textarea的id =" Message"元素,问题是我不知道如何序列化表单以达到使用ItemResponsesVM实例描述的操作。

1 个答案:

答案 0 :(得分:2)

您已经正确序列化表单:

data: form.serialize()

请确保使用Message属性修饰[AllowHtml]属性,否则ASP.NET运行时可能会拒绝该请求(如果它包含<,{{1}等危险字符},...:

>

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)。