【问题标题】:ASP.NET / Ajax - How do you pass a parameter in your call?ASP.NET / Ajax - 如何在调用中传递参数?
【发布时间】:2013-01-25 19:57:13
【问题描述】:

我正在尝试过滤我的结果,但不知道如何设置 ajax 查询以与 select2 下拉菜单一起正常工作。据我所知,你应该使用数据,但这不仅仅是传递值并过滤我的调用。

这是我的 ajax:

            $('#e1').select2({
                placeholder: "Select an ingredient...",
                minimumInputLength: 2,
                ajax: {
                    url: "../api/IngredientChoices",
                    data: 'mi',
                    dataType: "json",
                    quietMillis: 500,
                    data: function (term, page) {
                        return {
                            q: term,
                            page_limit: 10,
                            page: page

                        };
                    },
                    results: function (data, page) {
                        var more = (page * 10) < data.length;
                        console.log(more);
                        console.log(data);
                        return { results: data, more: more };

                    },
                    formatResult: function (post) {
                        markup = '<strong>' + post.text + '</strong>';
                    }
                }
            });

这是我的控制器:

    public List<Models.IngredientChoices> Get(string param)
    {
        var choices = (from i in _context.IngredientItems_View(param)

                       select new Models.IngredientChoices
                       {
                           id = i.ItemID,
                           text = i.ConcatName,
                       });
        return choices.ToList();
    }

ajax 调用当前返回所有值。

【问题讨论】:

  • 我相信他们,你在哪里看到问题?
  • url: "../api/IngredientChoices", 期望的数据形式是什么?默认? 'application/x-www-form-urlencoded; charset=UTF-8'

标签: c# jquery asp.net sql ajax


【解决方案1】:

你的 ajax 上有一个重复的成员 data: - 你应该只有一个。

编辑:只是一个 SWAG,但也许你需要一个类:

class myparam {
  string q ;
  int page_limit;
  int page;
}
//decorate for JSON
public List<Models.IngredientChoices> Get(myparm param)
{
    var choices = (from i in _context.IngredientItems_View(param.q)

【讨论】:

  • 请忽略我将它放入测试但代码仍然无法使用它。
  • 控制器方法中的参数名称或参数名称需要匹配从 AJAX 函数作为数据发送的变量名称,模型绑定器才能工作。
  • 你是对的@jmoerdyk - 我需要将 c# 中的参数更改为 q 并且它有效。
【解决方案2】:

正如@jmordyk 所说,答案是我的q: 术语与我在c# 中的参数不匹配。我改变了这一行:

public List<Models.IngredientChoices> Get(string param)

成为:

public List<Models.IngredientChoices> Get(string q)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-13
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2012-01-15
    相关资源
    最近更新 更多