Хорошо, я ничего не нашел с моей точной проблемой, поэтому, надеюсь, кто-то может наполнить меня этим. Я использую ASP.NET MVC 4 (таргетинг 4.5.1 Fx) и использую KO 3.0 и последний jQuery. У меня есть модель KO, которая имеет несколько свойств больше, чем модель .NET, которую она представляет (2 вычисляемых наблюдаемых необходимо только в представлении, а не в бэкэнд). Сценарий заключается в том, что пользователь вносит некоторые изменения и нажимает кнопку «Сохранить». Это вызывает метод в KO VM, который использует jQuery для отправки назад на сервер и сохранения изменений. метод Контроллер выглядит так:
public void Post(Profile profile)
{
var modifiedDate = DateTime.UtcNow;
var existingProfile = db.Profiles.FirstOrDefault(x => x.Id == profile.Id);
...
db.SaveChanges();
}
метод
Мой KO выглядит так:
self.updateProfile = function (profile) {
$.post("/api/profile", profile, function() {
alert('saved');
});
};
Теперь это работает просто отлично, но если я пытаюсь изменить, чтобы использовать метод $ АЯКС (который является то, что Я бы хотел, чтобы более тонкий контроль зерна), он терпит неудачу.
$.ajax({
url: "/api/profile",
type: "post",
dataType: "json",
data: {
profile: profile
},
success: function() {
alert('saved');
}
});
Профиль объекта в методе контроллера не связан с данными, отправленными методом $ ajax. Я не уверен, почему, поскольку $ post - это просто абстракция уровня $ ajax на высоком уровне. Любая помощь будет оценена по достоинству.
С открытой консолью отладки, как отличаются два заголовка запроса? – Jasen
глядя на 2 разных запроса, которые теперь используют инспектор WebForms в Fiddler 4, я вижу, что метод $ post имеет значения Id: value, OwnerId: value и т. Д., Где, когда метод $ ajax имеет профиль [Id]: значение, profile [OwnerId]: значение. Так ясно, что это проблема. Что делает метод $ post, который мне нужен для репликации в $ ajax? – Shaggy13spe