2013-02-22 2 views
2

Моей проблемы:Ajax и MVC объекта класса проводки к контроллеру

Первой, у меня есть форма поиска, где критерии пользователя вводит и запрос посылаются к соответствующему действию индекса контроллеров. Вход пользователя передается как тип модели, который я создаю только для хранения данных. Я возвращаю модель в представление, а затем прямо перед визуализацией представления. Я получаю данные модели Model Model с использованием jquery, и у меня есть knockout.js/ajax, выставляющий «данные» в действие jsonresult, где происходит фильтрация поиска, и я обновляю представление с использованием данных json и привязки данных для нокаутов.

Действие jsonresult принимает строку sortByText (работает) для сортировки таблицы и ViewModel. Но когда возникает вызов ajax, мое действие jsonresult не распознает значения, переданные данным объектом.

Как я могу правильно передать «SearchFormModel» в действие JSONresult?

AJAX

'self.options.formModel' держит мои данные, посланные действия Index; во время отладки я вижу, что у него есть данные, но на следующем этапе он не отправляется в действие jsonresult, а только sortByText. Может ли ajax 'data:' распознавать только строки и int?

 $.ajax({ 
     type: 'POST', 
     url: Url, 
     data: { sortByText: selectedText, formModel: self.options.formModel }, 
     dataType: "json" 
     })....etc 

Контроллер

[HttpGet]  
    public ActionResult Index(string sortByText, SearchFormModel formModel) 
    { 
     var model = new SearchViewModel(); 
     model.FormModel = formModel; 

     return View(model); 
    } 

    [HttpPost] 
    public JsonResult GetData(string sortByText, SearchFormModel formModel) 
    { 

     //return jsonData 
    } 

ответ

0

Я закончил передачу строк и целых чисел, вместо этого передача объекта не сработала.

1

Использование ko.toJS (self.options.formModel()) для преобразования observableArray в объект JSON

1

попробовать Использование: -

$.ajax({ 
    type: 'POST', 
    url: Url, 
    data: ko.toJSON({ sortByText: selectedText, formModel: self.options.formModel }), 
    dataType: "json" 
    }) 

Во-вторых , может быть, это звучит из контекста: -
В вашем SearchFormModel есть

[JsonObject(MemberSerialization.OptIn)] 
public class SearchFormModel 
{ 

    [JsonProperty("id")] 
    public string Id{ get; set; } 

} 

Или вы можете включить sortByText в вашей модели класса: -

[JsonObject(MemberSerialization.OptIn)] 
public class SearchFormModel 
{ 

    [JsonProperty("id")] 
    public string Id{ get; set; } 
    [JsonProperty("sortByText ")] 
    public string SortByText { get; set; } 

} 

и ваш AJAX будет как: -

$.ajax({ 
    type: 'POST', 
    url: Url, 
    data: ko.toJSON(self.options.formModel), 
    dataType: "json" 
    }) 

Надежда я не нахожусь в неправильном направлении.

1

Иногда вам приходится извлекать данные из сериализованного объекта формы. У меня есть a post about this, доступный с кодом. Часть, которую вы ищете, примерно наполовину вниз, озаглавленная «Проблема данных POST».

Смежные вопросы