我正在使用MVC 5 C#而我正试图通过AJAX更新我的搜索过滤器。通过代码它可以工作,但结果不会出现在测试中。我已完成一些调试,在我看来,结果会在视图中抛出,如下所示:
它应该显示在搜索框的正下方,但不显示任何内容。
不太确定问题是什么。所以我会列出我的代码。这是我的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但只是显示结果)。 但无论如何,这是我的控制器:
[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();
}
似乎可能只是我想念的东西,我不知道。 任何帮助将不胜感激。
干杯
答案 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) {
}
});