我是asp.net MVC4的新手。 为了从列表中搜索名称,我在MVC4中尝试了一个搜索过滤器。
这是控制器 -
public ActionResult SearchUser(string Email, int? UserId) {
var system = from u in db.SystemUsers
select u;
if (!String.IsNullOrEmpty(Email)) {
system = system.Where(c => c.Email.Contains(Email));
}
return View(system.Where(x=>x.Email==Email));
}
查看 -
<input type="text" id="search-User" />
<button id="text-email">search</button>
Ajax处理 -
<script type="text/javascript">
$(document).ready(function () {
$('#text-email').click(function () {
var areavalue = $('#search-User').val();
alert(areavalue);
$.ajax({
url: '/Allusers/SearchUser/?Email=' + areavalue,
type: 'get',
datatype: 'json'
});
});
});
</script>
视图模型 -
public class UserModel
{
[Required]
public string Email { get; set; }
public int UserId { get; set; }
}
我有很多用户作为列表,所以我想从列表中筛选出任何用户。为此,我使用input元素来获取列表中的确切名称。因此,此名称将传递给控制器以查找完全匹配。
显示我通过ajax处理但未显示过滤结果的值。
如何在Asp.net MVC4中进行搜索?
答案 0 :(得分:1)
您的ajax函数正在将数据发送到服务器,但它没有对结果执行任何操作。要使用结果,您应该使用您调用的jQuery .ajax method中的done
promise方法。它看起来像这样:
$.ajax({
url: '/Allusers/SearchUser/?Email=' + areavalue,
type: 'get',
datatype: 'json'
}).done(
function(data, textStatus, jqXHR) {
var object = jQuery.parseJSON(data);
// LOGIC FOR UPDATING UI WITH RESULTS GOES HERE
}
);
您也可以使用Success
回调选项(而不是done
)。但关键是要提供有关如何处理Action返回的数据的逻辑。
此外,如果您打算使用ViewModel返回结果,则可能需要从Linq查询中返回UserModel
个对象。
如果您希望从您的操作中恢复JSON,则不应返回View
。相反,请尝试returnins JSON(data)
。 (有关详细信息,请参阅here。)
答案 1 :(得分:1)
我会使用更好的Load()
函数来实现这个目的:
<script>
$(function () {
$('#text-email').click(function () {
var areavalue = $('#search-User').val();
$(".YourDivForResults").Load('/Allusers/SearchUser/?Email=' + areavalue)
});
});
</script>
并且,作为建议,请按如下方式修改您的ActionResult:
system = system.Where(c => c.Email.ToUpper().Trim().Contains(Email.ToUpper().Trim()));
这样可以避免空格和大写或低位字母的问题。
答案 2 :(得分:0)
你需要对你的动作做一些小改动,比如
public ActionResult SearchUser(string Email, int? UserId) {
var system = from u in db.SystemUsers
select u;
if (!String.IsNullOrEmpty(Email)) {
system = system.Where(c => c.Email.Contains(Email));
}
return Json(system.Where(x=>x.Email==Email),JsonRequestBehavior.AllowGet);
}
并在你的ajax电话中
$(document).ready(function () {
$('#text-email').click(function () {
var areavalue = $('#search-User').val();
alert(areavalue);
$.ajax({
url: '/Allusers/SearchUser/?Email=' + areavalue,
type: 'get',
datatype: 'json',
success:function(data){JSON.stringify(data);}
});
});
});
这样您就可以获得json格式的搜索结果。你可以利用它。希望它有所帮助