C# 将查询结果传递给ajax回调

C# 将查询结果传递给ajax回调,c#,jquery,ajax,asp.net-mvc,entity-framework,C#,Jquery,Ajax,Asp.net Mvc,Entity Framework,我正在进行一个实时搜索,用户在文本框中键入一些内容,然后通过ajax获取结果并添加到ul,在这个特定的例子中,我正在查找用户名,因此如果用户名是johnny,用户在jo中键入,那么johnny应该出现,依此类推 我有ajax js代码、一个post方法和一个用户列表模型视图,我现在正试图返回列表,但似乎不起作用 我的js: $("input#searchtext").keyup(function (e) { var searchVal = $("input#searchtext").v

我正在进行一个实时搜索,用户在文本框中键入一些内容,然后通过ajax获取结果并添加到ul,在这个特定的例子中,我正在查找用户名,因此如果用户名是johnny,用户在jo中键入,那么johnny应该出现,依此类推

我有ajax js代码、一个post方法和一个用户列表模型视图,我现在正试图返回列表,但似乎不起作用

我的js:

$("input#searchtext").keyup(function (e) {

    var searchVal = $("input#searchtext").val();

    var url = "/profile/LiveSearch";

    $.post(url, { searchVal: searchVal }, function (data) {
console.log(data);
    });

});
LiveSearch视图模型

public class LiveSearchUserVM
    {
        public LiveSearchUserVM()
        {
        }

        public LiveSearchUserVM(UserDTO row)
        {
            FirstName = row.FirstName;
            LastName = row.LastName;
        }

        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
post方法

[HttpPost]
        public List<string[]> LiveSearch(string searchVal)
        {
            // Init db
            Db db = new Db();

            List<LiveSearchUserVM> usernames = db.Users.Where(x => x.Username.Contains(searchVal)).Select(x => new LiveSearchUserVM(x)).ToList();

            return usernames;
        }

因此,基本上我想返回一个列表或其他包含特定字符串的列,并通过ajax回调将所有结果传递给javascript。

您可以这样使用。这个想法是利用成功的功能

   $.ajax({
url : ""/profile/LiveSearch"",
type: "POST",
data : searchVal ,
success: function(data)
{
    //data - response from server
},
error: function ()
{

}
});

并从Post方法返回JsonResult

以JSON形式返回结果。请将您的方法更改为:

[HttpPost]
public JsonResult LiveSearch(string searchVal)
{
    // Init db
    Db db = new Db();

    List<LiveSearchUserVM> usernames = db.Users.Where(x => x.Username.Contains(searchVal)).Select(x => new LiveSearchUserVM(x)).ToList();

    return Json(usernames);
}

您可以使用成功回调和来自控制器的json结果检查我的答案,我希望这对签名中的操作返回列表有帮助,但实际上您正在返回列表。您的代码编译成功了吗?所以我首先需要将视图模型列表转换为json,对吗?如果是这样的话,首先怎么做?您也可以发送复杂的对象。对于您的情况,您有字符串,因此也可以返回JsonResult。但首先尝试一下,检查您是否收到了服务器的响应。下一步,您可以看到如何发送列表/复杂对象。我编辑了我的q,它在post方法中有错误的代码,我没有字符串,但结果是视图模型列表。我确实得到了一个成功的回调,问题是如何读取对象列表作为数据回调参数。这应该在返回通用列表时自动完成。NETMVC在将复杂对象转换为json方面做得非常好。它不是自动发生的,我必须事先转换它,但不知道如何转换。