在asp.net mvc4中搜索
本文关键字:搜索 mvc4 net asp | 更新日期: 2023-09-27 18:29:06
我是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>
ViewModel-
public class UserModel
{
[Required]
public string Email { get; set; }
public int UserId { get; set; }
}
我有很多用户作为一个列表,所以我想从列表中筛选出任何用户。为此,我使用input元素来获得列表中的确切名称。因此,这个名称被传递给控制器以找到完全匹配的名称。
它显示了我通过ajax处理传递的值,但没有显示过滤后的结果。
如何在Asp.net MVC4中执行搜索?
我会使用更好的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()));
这样可以避免空格和大写字母或小写字母的问题。
您的ajax函数正在将数据发送到服务器,但它不会对结果做任何操作。为了使用结果,您应该在正在调用的jQuery.ajax方法中使用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
。相反,请尝试返回JSON(data)
。(请参阅此处了解更多信息)。
您需要对您的操作进行小的更改,如
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格式的搜索结果。你可以利用它。希望它能帮助