我有一个复杂的对象,我创建了一个ViewModel,一个View和一些自定义的HTML帮助器。我的复杂对象中的一个对象是“发件人”对象。该对象需要ID和SenderType枚举是唯一的。我已经创建了一个自定义的Html Dropdown助手,它为每个选项添加了一个数据属性。发布枚举到MVC4控制器
<select id="Sender">
<optgroup label="Dynamic">
<option selected="selected" value="1" data-sendertype="Dynamic">Academic Advisor</option>
</optgroup>
<optgroup label="Generic">
<option value="1" data-sendertype="Generic">Test Account</option>
</optgroup>
</select>
我的对象,它应该被反序列化是(与仅填充ID和SenderType字段):
public class Sender
{
public int SenderID { get; set; }
public string EmailAddress { get; set; }
public SenderType Type { get; set; }
public string DisplayName { get; set; }
}
public enum SenderType{
Generic = 1,
Dynamic = 2
}
和形式张贴由以下的jQuery:
$(".controlButtons button[name='Save']").click(function(event) {
tinyMCE.triggerSave(true, true);
var data = $("#editTemplateForm").serializeArray();
data.push(
{
name: "Template.Sender.SenderID",
value: $("#Sender").val()
},
{
name: "Template.Sender.SenderType",
value: $("#Sender option:selected").attr("data-senderType") == "Dynamic" ? 2 :1
},
{
name: "Template.DefaultSender.SenderID",
value: $("#Sender").val()
},
{
name: "Template.DefaultSender.SenderType",
value: $("#DefaultSender option:selected").attr("data-senderType") == "Dynamic" ? 2 :1
}
);
console.log(data);
$.ajax({
type: "POST",
url: "@Url.Action("EditTemplateTab", new {id = Model.Template.TemplateID})",
data: data,
success: function(data) {
$("#ui-tabs-1").html(data);
},
error: function(data) {
alert(data);
}
});
});
我遇到的问题是它没有反序列化SenderType,我正确添加到serializedArray中并且说SenderType 0无效(这是真的)。
错误
有没有什么可以张贴Ajax请求的捕获什么办法? – Martin
当然,一秒钟。 – Mike