Asp.net mvc 4 将枚举后置到MVC4控制器

Asp.net mvc 4 将枚举后置到MVC4控制器,asp.net-mvc-4,serialization,enums,Asp.net Mvc 4,Serialization,Enums,我有一个复杂的对象,我为它创建了一个视图模型、一个视图和一些自定义HTML帮助程序。我的复杂对象中的一个对象是“发送者”对象。该对象要求ID和SenderType枚举唯一。我已经创建了一个自定义Html下拉帮助器,它为每个选项添加了一个数据属性 <select id="Sender"> <optgroup label="Dynamic"> <option selected="selected" value="1" data-sender

我有一个复杂的对象,我为它创建了一个视图模型、一个视图和一些自定义HTML帮助程序。我的复杂对象中的一个对象是“发送者”对象。该对象要求ID和SenderType枚举唯一。我已经创建了一个自定义Html下拉帮助器,它为每个选项添加了一个数据属性

<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>
该表单由以下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);
                }
            });
        });
我遇到的问题是,它没有正确地反序列化我添加到serializedArray中的SenderType,并且说SenderType 0无效(这是真的)

错误屏幕截图

JSON序列化程序不能很好地与.NET枚举进行转换。见本文:

尝试以下方法:

public class Sender
{
    public int SenderID { get; set; }

    public string EmailAddress { get; set; }

    public SenderType Type { get; set; }

    public int SenderTypeValue
    {
        get { return (int) this.Type; }
        set { this.Type = (SenderType) value; }
    }

    public string DisplayName { get; set; }
}

public enum SenderType
{

    Generic = 1,
    Dynamic = 2
}

有没有什么方法可以发布ajax请求的捕获?在我删除@Html.LabelFor()并放入静态标签字段后,这种方法就奏效了。谢谢你的帮助。
public class Sender
{
    public int SenderID { get; set; }

    public string EmailAddress { get; set; }

    public SenderType Type { get; set; }

    public int SenderTypeValue
    {
        get { return (int) this.Type; }
        set { this.Type = (SenderType) value; }
    }

    public string DisplayName { get; set; }
}

public enum SenderType
{

    Generic = 1,
    Dynamic = 2
}