У меня есть страница MVC, которая отправляет JSON выбранных значений из группы переключателей.
Я использую:
var dataArray = $.makeArray($("input[type=radio]").serializeArray());
Чтобы создать массив их имен и значений. Затем я конвертирую его в JSON с помощью:
var json = $.toJSON(dataArray)
и затем отправляю его с помощью jQuery ajax () на контроллер MVC
$.ajax({
url: "/Rounding.aspx/Round/" + $("#OfferId").val(),
type: 'POST',
dataType: 'html',
data: json,
contentType: 'application/json; charset=utf-8',
beforeSend: doSubmitBeforeSend,
complete: doSubmitComplete,
success: doSubmitSuccess});
, который отправляет данные как собственные данные JSON.
Затем вы можете захватить поток ответа и де- сериализуйте его в собственный объект C # / VB.net и управляйте им в своем контроллере.
Чтобы автоматизировать этот процесс красивым, не требующим обслуживания способом, я советую прочитать эту запись, в которой подробно описывается большая часть встроенной автоматической десериализации JSON.
Сопоставьте объект JSON с вашей моделью, и связанный ниже процесс должен автоматически десериализовать данные в ваш контроллер. У меня это прекрасно работает.
Я думаю, вам нужно явно передать атрибут данных. Один из способов сделать это - использовать data = $ ('# your-form-id'). serialize ();
Этот пост может быть полезным. Сообщение с jquery и ajax
Посмотрите документацию здесь .. Ajax serialize
Если вам нужно отправить ПОЛНУЮ модель на контроллер, вам сначала нужно, чтобы модель была доступна для вашего кода javascript.
В нашем приложении мы делаем это с метод расширения:
public static class JsonExtensions
{
public static string ToJson(this Object obj)
{
return new JavaScriptSerializer().Serialize(obj);
}
}
В представлении мы используем его для визуализации модели:
<script type="javascript">
var model = <%= Model.ToJson() %>
</script>
Затем вы можете передать переменную модели в свой вызов $ .ajax.