Вам необходимо установить тип содержимого запроса на application/json
:
$.ajax({
url: '/image/tag',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: $.toJSON(tag),
success: function (r) {
if (r.success == 1) {
window.location.href = r.redirect;
}
}
});
А, и вам не нужно, чтобы свойства модели тега начинались со строчной буквы:
public class Tag
{
public int TagId { get; set; }
public string TagName { get; set; }
}
Примечание 1. Класс JavaScriptSerializer
, который ASP.NET MVC 3 использует за кулисами, способен правильно обрабатывать это.
Примечание 2: В вашем действии Tag
вы, похоже, являетесьвозвращая следующий JSON: {"success":0}
, тогда как при успешном обратном вызове AJAX вы, похоже, используете какое-то свойство r.redirect
, которого не существует.
Примечание 3: Избегайте именования действий вашего контроллера так же, как ваше представлениемоделей.Обычно имена действий должны представлять глаголы (например, List
, Save
, Delete
, ...), тогда как модели представления представляют ресурсы (TagModel
, ...).