实时搜索 MVC
Live search MVC
我正在寻找 ASP.NET 和 entity framework 的实时搜索。我对它有点陌生。我读到它需要使用 ajax,但我以前从未使用过它,也找不到很好的例子。这是一段代码,cshtml(文本框的一部分)
<div class="form-horizontal">
<hr />
<h4>Search for a client: </h4>
<div class="input-group">
<span class="input-group-addon" id="Name">
<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
</span>
@Html.TextBox("Name", "", new { @class = "form-control", placeholder = "Name" })
</div>
<div><h6></h6></div>
<div class="input-group">
<span class="input-group-addon" id="Surname">
<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
</span>
@Html.TextBox("Surname", "", new { @class = "form-control", placeholder = "Surname" })
</div>
<div><h6></h6></div>
<button type="submit" class="btn btn-default" data-toggle="modal" data-target="#infoModal">Search</button>
</div>
这是控制器的一部分:
public ActionResult Index(string Name, string Surname)
{
var SearchList = from m in db.Klienci
select m;
if (!String.IsNullOrEmpty(Name))
{
SearchList = SearchList.Where(s => s.Name.Contains(Name));
}
if (!String.IsNullOrEmpty(Surname))
{
SearchList = SearchList.Where(s => s.Nazwisko.Contains(Surname));
}
return View(SearchList);
}
所以它按名字和姓氏搜索我的客户,但是当它失去焦点或点击按钮后它会刷新整个页面。如何解决它,获得实时搜索?每次击键后通过数据库搜索?我有点菜鸟,你能帮帮我吗?
这很好 example/tutorial 如何使用 Ajax 和 ASP.NET MVC
http://www.itorian.com/2013/02/jquery-ajax-get-and-post-calls-to.html
编辑:2016-07-20
示例:
$(function () {
$("searchField").keyup(function () {
$.ajax({
type: "POST",
url: "/Controller/Action",
data: data,
datatype: "html",
success: function (data) {
$('#result').html(data);
}
});
});
您必须访问服务器才能从服务器获取数据,没有 ajax 这是不可能的。现在的问题是如何进行 ajax 调用,你可以使用 jQuery js lib 来做,但我建议你尝试 angular 因为 angular 中的数据绑定将满足你的需求需要。
看看下面的链接
Angular Ajax Service -
jQuery Ajax
您可以在输入元素上监听 keyup
事件,读取值并使用 ajax 将其发送到服务器。 Return 结果并在 ajax 调用的成功回调中,用结果更新 ui。
$(function() {
$("#Name,#SurName").keyup(function(e) {
var n = $("#Name").val();
var sn = $("#SurName").val();
$.get("/Home/Index?Name="+n+"&SurName="+sn,function(r){
//update ui with results
$("#resultsTable").html(r);
});
});
});
代码基本上监听两个输入文本框上的按键事件并读取值并使用 jquery 获取方法 asynchronously.When 操作方法发送到 /Home/Index
操作方法returns 响应,我们更新 DOM。
假设 resultsTable
是我们列出结果的 table 的 ID。
此外,由于您返回的是局部视图结果(没有布局 headers),因此您应该使用 return PartialView()
而不是 return View()
if(Request.IsAjaxRequest())
return PartialView(SearchList);
return View(SearchList);
我正在寻找 ASP.NET 和 entity framework 的实时搜索。我对它有点陌生。我读到它需要使用 ajax,但我以前从未使用过它,也找不到很好的例子。这是一段代码,cshtml(文本框的一部分)
<div class="form-horizontal">
<hr />
<h4>Search for a client: </h4>
<div class="input-group">
<span class="input-group-addon" id="Name">
<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
</span>
@Html.TextBox("Name", "", new { @class = "form-control", placeholder = "Name" })
</div>
<div><h6></h6></div>
<div class="input-group">
<span class="input-group-addon" id="Surname">
<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
</span>
@Html.TextBox("Surname", "", new { @class = "form-control", placeholder = "Surname" })
</div>
<div><h6></h6></div>
<button type="submit" class="btn btn-default" data-toggle="modal" data-target="#infoModal">Search</button>
</div>
这是控制器的一部分:
public ActionResult Index(string Name, string Surname)
{
var SearchList = from m in db.Klienci
select m;
if (!String.IsNullOrEmpty(Name))
{
SearchList = SearchList.Where(s => s.Name.Contains(Name));
}
if (!String.IsNullOrEmpty(Surname))
{
SearchList = SearchList.Where(s => s.Nazwisko.Contains(Surname));
}
return View(SearchList);
}
所以它按名字和姓氏搜索我的客户,但是当它失去焦点或点击按钮后它会刷新整个页面。如何解决它,获得实时搜索?每次击键后通过数据库搜索?我有点菜鸟,你能帮帮我吗?
这很好 example/tutorial 如何使用 Ajax 和 ASP.NET MVC
http://www.itorian.com/2013/02/jquery-ajax-get-and-post-calls-to.html
编辑:2016-07-20
示例:
$(function () {
$("searchField").keyup(function () {
$.ajax({
type: "POST",
url: "/Controller/Action",
data: data,
datatype: "html",
success: function (data) {
$('#result').html(data);
}
});
});
您必须访问服务器才能从服务器获取数据,没有 ajax 这是不可能的。现在的问题是如何进行 ajax 调用,你可以使用 jQuery js lib 来做,但我建议你尝试 angular 因为 angular 中的数据绑定将满足你的需求需要。 看看下面的链接 Angular Ajax Service - jQuery Ajax
您可以在输入元素上监听 keyup
事件,读取值并使用 ajax 将其发送到服务器。 Return 结果并在 ajax 调用的成功回调中,用结果更新 ui。
$(function() {
$("#Name,#SurName").keyup(function(e) {
var n = $("#Name").val();
var sn = $("#SurName").val();
$.get("/Home/Index?Name="+n+"&SurName="+sn,function(r){
//update ui with results
$("#resultsTable").html(r);
});
});
});
代码基本上监听两个输入文本框上的按键事件并读取值并使用 jquery 获取方法 asynchronously.When 操作方法发送到 /Home/Index
操作方法returns 响应,我们更新 DOM。
假设 resultsTable
是我们列出结果的 table 的 ID。
此外,由于您返回的是局部视图结果(没有布局 headers),因此您应该使用 return PartialView()
而不是 return View()
if(Request.IsAjaxRequest())
return PartialView(SearchList);
return View(SearchList);