Ajax没有更新我的搜索列表

时间:2014-06-19 14:50:04

标签: c# jquery ajax

我正在使用MVC 5 C#而我正试图通过AJAX更新我的搜索过滤器。通过代码它可以工作,但结果不会出现在测试中。我已完成一些调试,在我看来,结果会在视图中抛出,如下所示:enter image description here

它应该显示在搜索框的正下方,但不显示任何内容。

enter image description here

不太确定问题是什么。所以我会列出我的代码。这是我的Ajax。

<p>
Search Employee: <input type="text" name="userName" onkeyup="filterTerm(this.value);" />
</p>

<script>
    function filterTerm(value) {
        $.ajax({
            type: "POST",
            url: '@Url.Action("Index", "Directory")',
            data: {
                userName: value
            },
            cache: false,
            success: function (result) {


            }
        });
    }
</script>

Ajax已经过测试并且正在运行,现在在我的控制器中它也返回结果(显然是被拉回到View但只是显示结果)。 enter image description here 但无论如何,这是我的控制器:

[HttpPost]
public ActionResult Index(string userName)
{
    /**********Establish Connection********/
    DirectoryEntry dir = createDirectoryEntry();
    DirectorySearcher search = new DirectorySearcher(dir);

    /****Refer to class constructor****/


    /********Create the List to store results in***************/
    List<ADUser> Users = new List<ADUser>();
    string DisplayName = "", SAMAccountName = "", Mail = "", Description = "", Department = "", TelephoneNumber = "", Fax = "";

    /*******Filter parameters************/
    search.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(anr=" + userName + "* ))";
    SearchResultCollection searchresult = search.FindAll();
    search.PropertiesToLoad.Add("Displayname");
    search.PropertiesToLoad.Add("SAMAccountName");
    search.PropertiesToLoad.Add("Mail");
    search.PropertiesToLoad.Add("Description");
    search.PropertiesToLoad.Add("TelephoneNumber");
    search.PropertiesToLoad.Add("Fax");
    search.PropertiesToLoad.Add("Department");

    /*****************Filtering and populating the List****************/

    if (searchresult != null)
    {
        foreach (SearchResult iResult in searchresult)
        {
            ADUser userAttributes = new ADUser("", "", "", "", "", "", "");

            foreach (string PropertyName in iResult.Properties.PropertyNames)
            {
                foreach (Object key in iResult.GetDirectoryEntry().Properties[PropertyName])
                {
                    try
                    {
                        switch (PropertyName.ToUpper())
                        {
                              .....
                        }
                    }
                    catch { }
                }
            }

            Users.Add(userAttributes);
        }

        return View(Users);
    }

    return View();
}

似乎可能只是我想念的东西,我不知道。 任何帮助将不胜感激。

干杯

1 个答案:

答案 0 :(得分:0)

将您的用户列表序列化为json,然后返回查看,如下所示。

 using System.Web.Script.Serialization;

var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(User);
return View(json)

并使你的ajax的数据类型json如下:

 $.ajax({
            type: "POST",
            url: '@Url.Action("Index", "Directory")',
            data: {
                userName: value
            },
            dataType:"json",
            cache: false,
            success: function (result) {


            }
    });