и это было проблемой в моем случае. Спасибо!

ел несколько вопросов, связанных с аналогичной проблемой, я прочитал их, следил за ними, но все же у меня та же проблема.

Я в основном создаю объект в javascript и пытаюсь вызвать метод на контроллере, который вернет строку html. Не JSON.

Я поиграл с dataType и contentType, но все еще не радует. Так что извините, если фрагменты кода немного грязные.

Построить объект в JS.

function GetCardModel() {
    var card = {};
    card.CardTitle = $("#CardTitle").val();
    card.TopicTitle = $("#TopicTitle").val();
    card.TopicBody = $("#TopicBody").data("tEditor").value();
    card.CardClose = $("#CardClose").val();
    card.CardFromName = $("#CardFromName").val();
    return card;
}

Взгляните на объект - все выглядит хорошо и как следует в JSON.

var model = GetCardModel();
alert(JSON.stringify(GetCardModel()));

Сделай звонок ...

$.ajax({
            type: "POST",
            url: "/Postcard/Create/Preview/",
            dataType: "json",
            //contentType: "application/json",
            data: GetCardModel(),
            processData: true,
            success: function (data) {
                alert("im back");
                alert(data);
            },
            error: function (xhr, ajaxOptions, error) {
                alert(xhr.status);
                alert("Error: " + xhr.responseText);
                //alert(error);
            }
        });

Всегда, когда я захожу в контроллер, объект всегда ВСЕГДА, но с нулевыми значениями для всех свойств.

 ruffin13 дек. 2013 г., 19:54
Ну, не редактируйте ошибку из своего вопроса. Сложнее увидеть, что нашел Дарин! (data выше былоdate впервая версияну конечно)
 SteveCl13 дек. 2013 г., 23:33
Это была не проблема, это была опечатка в вопросе. Всегда читайте комментарии к ответам

Ответы на вопрос(1)

Решение Вопроса

Имя параметра должно бытьdataнеdate:

$.ajax({
    type: 'POST',
    url: '/Postcard/Create/Preview/',
    dataType: 'json',
    data: {
        CardTitle: $("#CardTitle").val(),
        TopicTitle: $("#TopicTitle").val(),
        TopicBody: $("#TopicBody").data("tEditor").value(),
        CardClose: $("#CardClose").val(),
        CardFromName: $("#CardFromName").val()
    },
    success: function (data) {
        alert('im back');
        alert(data);
    },
    error: function (xhr, ajaxOptions, error) {
        alert(xhr.status);
        alert('Error: ' + xhr.responseText);
    }
});

который успешно вызовет следующее действие контроллера и параметр действия будет правильно привязан:

[HttpPost]
public ActionResult Preview(Card card) { ... }

с моделью ниже:

public class Card
{
    public string CardTitle { get; set; }
    public string TopicTitle { get; set; }
    public string TopicBody { get; set; }
    public string CardClose { get; set; }
    public string CardFromName { get; set; }
}
 SteveCl11 янв. 2011 г., 11:03
да, это была опечатка ... извините.
 Darin Dimitrov11 янв. 2011 г., 11:08
@ SteveCI, хорошо, пожалуйста, посмотрите мое обновление, но даже с внешней функцией он работал нормально для меня.
 Ankur-m25 июл. 2012 г., 10:15
у меня только что былpublic string PropertyName вместоpublic string PropertyName { get; set; } и это было проблемой в моем случае. Спасибо!
 SteveCl11 янв. 2011 г., 11:10
для данных у меня теперь есть JSON.stringify (GetCardModel ()). мне нужно зачеркнуть ?? ну, это работает, так что я так думаю.
 SteveCl11 янв. 2011 г., 11:09
моя модель такая, но с парой дополнительных реквизитов. Хорошо, теперь он переходит к модели в контроллер, но мне нужно было настроить его, как вы сказали, за исключением изменения dataType на text и добавления contentType в application / json - который останавливал передаваемые данные. удаленный processData - не уверен, что это делает или по умолчанию.

Ваш ответ на вопрос