2015-01-14 4 views
1

Я пытаюсь выполнить сопоставление asp.net текущего tableState с SmartTable.Ошибка сопоставления SmartTable и ASP.NET для AngularJS

Я использую ASP.NET MVC 5.

Мои angularjs называют выглядеть следующим образом:

usersService.getUsers({ 
       start: start, 
       number: number, 
       tableState: tableState 
      } 
     ).then(function(result) { 

     }); 

Мои параметры QueryString выглядеть следующим образом:

number:10 
start:0 
tableState:{"sort":{"predicate":"location","reverse":false},"search":{"predicateObject":{"location":"gfdgd","service":"gfdgd","company":"gd","fullname":"john"}},"pagination":{"start":0,"number":10}} 

И, конечно, я стараюсь map в asp.net запрашивать информацию. Мой контроллер действия выглядеть следующим образом:

public JsonResult GetUsers(SmartTableRequestModel request) 
     { 
      return GetJsonResult(new 
      { 

      }); 
     } 

И модель, которые я пытаюсь связать на следующую:

public class SmartTableRequestModel 
    { 
     public SmartTableQueryModel TableState { get; set; } 

     public int Number { get; set; } // number is well-binded 

     public int Start { get; set; } // the start is well-binded too 
    } 

public class SmartTableQueryModel 
    { 
     [JsonProperty("sort")] 
     public SmartTableSortModel Sort { get; set; } 

     [JsonProperty("search")] 
     public SmartTableSearchModel Search { get; set; } 

     [JsonProperty("pagination")] 
     public SmartTablePaginationModel Pagination { get; set; } 
    } 

public class SmartTableSortModel 
    { 
     [JsonProperty("predicate")] 
     public string Predicate { get; set; } 

     [JsonProperty("reverse")] 
     public bool Reverse { get; set; } 

    } 

и так далее ...

Но я не получил все, что отображается в модели tableState. Свойство TableState из моего объекта SmartTableRequestModel всегда равно null.

Спасибо за вашу помощь, следующей Разван

+0

Я предполагаю, что вы используете asp.net MVC. Можете ли вы разместить несколько подробностей, например, какую версию MVC вы используете? –

+0

Я обновил свой вопрос. Простите за это. Я использую ASP.NET MVC 5. –

+0

Пробовали ли вы использовать TypeConverters или привязки моделей? См. Http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api – mentat

ответ

0

Проблема в том, что мои getUsers были методом httpget, и вы не можете передать модель методу httpget.

Итак, я изменил свои ресурсы, чтобы соответствовать вызову httppost.

{ 
     getUsers: { url: ci.domainPub + '/Management/GetUsers', method: 'POST', action: 'getUsers'}, 
    }, 

И в контроллер действие будет:

[HttpPost] 
public JsonResult GetUsers(SmartTableRequestModel request) 
     { 
      return GetJsonResult(new 
      { 

      }); 
     } 

И с этим механизмом вы можете оставить tableState в smartTable плагина без какой-либо обработки и фильтра/порядок, основанный на том, что на стороне сервера.

0

Try посылая что-то данные запроса, как показано ниже.

{"request" :{"TableState": {"sort":{"predicate":"location","reverse":false},"search":{"predicateObject":{"location":"gfdgd","service":"gfdgd","company":"gd","fullname":"john"}},"pagination":{"start":0,"number":10}}},"Number":10,"Start":1} 
+0

Это не сработает, конечно. Связывание не работает таким образом. –

+0

Вы попробовали или просто догадались? –

+0

Я пробовал, но я был уверен, что это не сработает. Проблема в том, что мои getUsers были методом httpget, и вы не можете передать модель методу httpget и ожидать, что она будет отображаться. –

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