не может передавать данные в контроллер через ajax - PullRequest
0 голосов
/ 16 января 2012

У меня есть следующий класс модели:

[Serializable]
public class SearchHomeModel
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Company { get; set; }
    public string Title { get; set; }
}

У меня есть следующий код контроллера:

public ActionResult DataTableUserList(SearchHomeModel search, UserListType type, int iDisplayStart, int iDisplayLength, string sEcho)

и следующая клиентская часть:

var search = {};
search.FirstName = 'aa';
search.LastName = 'bb';
search.Company = 'kkk';
search.Title = 'aaaawww';

fnServerData: function (sSource, aoData, fnCallback) {
    aoData.push({ "name": "type", "value": "All" });
    aoData.push({ "name": "search", "value": search });
    $.ajax({
        dataType: 'json',
        type: "POST",
        url: sSource,
        data: aoData,

но я смотрю на отладчик на стороне сервера, я вижу, что type = "All" (это правильно), но поиск пуст.Почему и как передавать данные в поисковый объект из ajax?

1 Ответ

1 голос
/ 16 января 2012

Вы можете или не можете найти это полезным, но я сделал это, чтобы я мог напрямую передавать JSON назад и вперед от контроллера.Я сталкивался с этим подходом ЗДЕСЬ во время игры с Knockout.js.

Я создал этот атрибут

  public class FromJsonAttribute : CustomModelBinderAttribute
{
    private readonly static JavaScriptSerializer serializer = new JavaScriptSerializer();

    public override IModelBinder GetBinder()
    {
        return new JsonModelBinder();
    }

    private class JsonModelBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var stringified = controllerContext.HttpContext.Request[bindingContext.ModelName];
            if (string.IsNullOrEmpty(stringified))
                return null;
            return serializer.Deserialize(stringified, bindingContext.ModelType);
        }
    }
}

Это код моего контроллера:

   [HttpPost]
        public ActionResult Gifts([FromJson] List<GiftModel> gifts, [FromJson] string guid)
        {
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...