我是asp.net mvc的新手,我想知道我做的是否正确。
我想创建一个搜索人物的视图。这是我到目前为止所做的:
商业模式类:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
public DateTime DOB { get; set; }
public List<Telephone> Telephones { get; set; }
}
ViewModel类:
public class SearchPersonViewModel
{
public int Id { get; set; }
public string FullName { get; set; }
public string LicencePlate { get; set; }
public string CarMake { get; set; }
public string CarModel { get; set; }
}
局部视图:
@model IEnumerable<MvcApplication2.Models.SearchPersonViewModel>
@foreach (var item in Model)
{
@Html.DisplayFor(m => item.Id)
@Html.DisplayFor(m => item.FullName)
}
调用局部视图的视图:
@Html.Action("Search", "Person");
* PersonController中的控制器方法:
[ChildActionOnly]
public ActionResult Search()
{
List<SearchPersonViewModel> model = new List<SearchPersonViewModel>();
model.Add(new SearchPersonViewModel() { FullName = "test", Id = 3 });
return PartialView("_SearchPerson", model);
}
现在问题是只要加载主视图就会调用Search方法。我想要的是在主视图上添加一个搜索文本框,用于过滤在局部视图中呈现的集合。我怎么能这样做?
答案 0 :(得分:1)
向/ search发送ajax请求并将数据附加到您的页面。
<div id = 'searchresult'>
@Html.Action("Search", "Person");
</div>
每当你想要过滤调用类似$('#searchresult')的东西时.load('/ search?q = xxx');
答案 1 :(得分:1)
您可以使用两种方式:
对于这两者,您需要删除[ChildActionOnly]
和@Html.Action("Search", "Person");
答案 2 :(得分:1)
这样,您的部分将仅在点击时呈现
<script>
(function($){
$('#btn').click(function(){
$('#searchresult').load('@Url.Content("~/Person/Search")');
}
</script>