У меня есть сложный объект, для которого я создал ViewModel, View и некоторые пользовательские HTML-хеды. Одним из объектов моего сложного объекта является объект «Отправитель». Для этого объекта требуется уникальный идентификатор и перечисление SenderType. Я создал настраиваемый помощник Html Dropdown, который добавляет атрибут данных для каждой опции.Сообщение Enum to MVC4 Controller
<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