У меня нет вашего полного исходного кода, поэтому трудно сказать почему у вас есть запрос на перенаправление с '/ Project / 1 / AddStory' на
http://localhost:57932/Project/1/Board?story.Summary=Test+description&...
T попытался воспроизвести вашу проблему. Я создал небольшое приложение MVC 2 с действием AddStory
в контроллере Project
, которое выглядит как ваше:
[HttpPost]
public JsonResult AddStory (int projectid, Story story) {
return Json (new {
Result = story,
myNewProjectid = projectid,
myNewSummary = story.Summary + ". " + "Bla bla",
myNewSize = story.Size + 20
});
}
где Story
класс, который я объявил так же, как следующий:
public class Story {
public string Summary { get; set; }
public int Size { get; set; }
}
Я вставил маршрут, как вы опубликовали, и добавил следующий jQuery
sctipt в Index
виде Home
контроллера:
jQuery(document).ready(function () {
var myStory = { Summary: 'Test description', Size: 8 };
$.ajax({
url: '/Project/1/AddStory',
data: { Summary: myStory.Summary, Size: myStory.Size },
dataType: 'json',
success: function (data, textStatus, xhr) {
alert('myNewSummary="' + data.myNewSummary +
'", Result.Summary="' + data.Result.Summary +
'", Result.Size=' + data.Result.Size);
},
error: function (xhr, textStatus, errorThrown) {
alert("error");
},
type: 'POST'
});
});
Код работает без проблем и выдает сообщение с текстом myNewSummary="Test description. Bla bla", Result.Summary="Test description", Result.Size=8
как ожидается.
Вы можете продолжать использовать traditional: true
, если у вас возникают проблемы с размещением более сложных структур данных. Текущий тест не требует использования traditional: true
.
Чтобы вам было проще сравнивать ваш код с моим рабочим примером, я поместил полный проект Visual Studio 2010 в http://www.ok -soft-gmbh.com / ForStackOverflow / MvcApplicationJson.zip . Надеюсь, это поможет вам быстро найти ошибку в своем коде и исправить ее.