我在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实例描述的操作。
答案 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
)。