【发布时间】:2015-04-21 17:56:51
【问题描述】:
我有一个适用于 IEnumerable 模型的搜索方法。
如何使其与简单模型一起使用? (或者怎么称呼..)
控制器:
[HttpPost] //FOR SEARCH (WORKING)
public ActionResult Search(string searchNume)
{
List<Contact> contactsList;
if (string.IsNullOrEmpty(searchNume))
{
contactsList = db.Contacts.ToList();
}
else
{
contactsList = db.Contacts.Where(x => x.Nume.Contains(searchNume)).ToList();
}
return View(contactsList);
}
查看:
@using Demo.Model.Contact
@using (Html.BeginForm())
{
<th>
@Html.TextBoxFor(model => model.Nume)
</th>
<th>
@Html.TextBoxFor(model => model.Prenume)
</th>
<th>
@Html.TextBoxFor(model => model.Adresa)
</th>
<th>
@Html.TextBoxFor(model => model.Mentiuni)
</th>
<th>
<input type="submit" name="submitSearch" value="Search" class="btn btn-info"
onclick=" location.href='@Url.Action("Search", "Home")' " />
</th>
UPDATE1:将 Index ActionResult 更改为 Search
UPDATE2:发布更多索引视图
Update3:更改后重新发布代码
////Search GET
//[ChildActionOnly]
public PartialViewResult Search() // for displaying the initial view with all contacts
{
List<Contact> contactsList = db.Contacts.ToList();
return PartialView("Contacts", contactsList);
}
////Search POST
[HttpPost]
public PartialViewResult Search(string txtsearchNume)
{
List<Contact> contactsList;
if (string.IsNullOrEmpty(txtsearchNume))
{
contactsList = db.Contacts.ToList();
}
else
{
contactsList = db.Contacts.Where(x => x.Nume.Contains(txtsearchNume)).ToList();
}
return PartialView("Contacts", contactsList);
}
查看:
@using Demo.Models
@model Contact
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts
{
<link href="~/Content/jquery-ui.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-ui.min.js"></script>
<script src="~/Scripts/jquery-ui.js"></script>
<script>
//Search
var url = '@Url.Action("Search", "Home")';
var filter = $('#Nume');
var results = $('#results');
$('#search').click(function () {
results.load(url, { txtsearchNume: filter.val() });
});
});
</script>
}
@using (Html.BeginForm())
{
@Html.TextBoxFor(model => model.Nume, null, new { id = "txtSearchNume", @class = "form-control" })
<button type="button" id="search">Search by Nume</button>
}
<div id="results">
@Html.Action("Search")
</div>
【问题讨论】:
-
不清楚你在问什么。您为
Index()方法显示的视图是否(在这种情况下它不起作用)?您在onclick事件中引用的Search方法是什么,并且由于您没有将任何参数传递给该方法,您期望得到什么结果? -
你想用 Ajax(异步)搜索调用填充(重新加载)某种网格吗?
-
我正在搜索一个表,当我为该视图使用 Ienumerable 模型时,此方法曾经有效。我需要将模型更改为简单,现在我还必须更改控制器操作,因为它说模型列表不可分配给模型类型 Demo.Models。我期待来自数据库表项的匹配项列表。我会用完整的索引视图更新问题,所以我猜你可以看得更好。
-
如果你想要一个标准的提交,然后将方法设为 GET(不是帖子)并包含一个带有文本框 (
name="searchNume") 的表单 (FormMethod.Get) 和提交按钮,这样你就可以通过将文本框的值传递给Index()方法,否则将 ajax 用于返回带有结果的部分视图并更新 DOM 的方法。 -
你想在这里做什么。为什么提交按钮中有
onclick=" location.href='@Url.Action("Search", "Home")?如果不会将任何内容传递给Search()方法。如果您删除它,您将回发一个Contact类型的模型,但该方法需要参数string searchNume您的查询建议您要按属性搜索Nume那么其他 3 个文本框的意义何在?
标签: c# asp.net-mvc