将按钮更改为
<button id="search">Search</button>
并添加以下脚本
var url = '@Url.Action("DisplaySearchResults", "Search")';
$('#search').click(function() {
var keyWord = $('#Keyword').val();
$('#searchResults').load(url, { searchText: keyWord });
})
public ActionResult DisplaySearchResults(string searchText)
{
var model = // build list based on parameter searchText
return PartialView("SearchResults", model);
}
jQuery .load
方法调用您的控制器方法,传递搜索文本的值,并<div>
使用部分视图更新的内容。
附注:使用一个的<form>
标签,并@Html.ValidationSummary()
和@Html.ValidationMessageFor()
有可能不是在这里有必要。您永远不会返回Index
视图ValidationSummary
是没有意义的,并且我假设您希望null
搜索文本返回所有结果,并且在任何情况下都没有属性的任何验证属性,Keyword
因此没有要验证的内容。
根据OP的注释,该注释SearchCriterionModel
将包含带有验证属性的多个属性,那么该方法将是包括一个提交按钮并处理表单.submit()
事件
<input type="submit" value="Search" />
var url = '@Url.Action("DisplaySearchResults", "Search")';
$('form').submit(function() {
if (!$(this).valid()) {
return false; // prevent the ajax call if validation errors
}
var form = $(this).serialize();
$('#searchResults').load(url, form);
return false; // prevent the default submit action
})
控制器的方法是
public ActionResult DisplaySearchResults(SearchCriterionModel criteria)
{
var model = // build list based on the properties of criteria
return PartialView("SearchResults", model);
}