我创建了一个人注册表。在这种形式中,我添加了一个显示人员列表的partial view
。我在此表单上添加了分页。现在我想实现搜索功能。
我的表单如下所示
这里我想实现搜索功能。但问题是我在表单上有两个按钮,即Create
和搜索。当我点击搜索按钮时,它会为我提供表格 register.cshtml 所需的字段验证。
以下是 register.cshtml
的代码@model WebLess.Models.PersonModel
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.firstName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.firstName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.firstName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.lastName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.lastName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.lastName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
<div class="form-group">
@if (ViewBag.Message != null)
{
<span class="text-success">@ViewBag.Message</span>
}
</div>
<div class="form-group">
@Html.Partial("list", Model.listOfPerson)
</div>
</div>
}
这是我的list.cshtml
。
@model PagedList.IPagedList<WebLess.Models.PersonModel>
@using PagedList.Mvc;
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />
@using (Html.BeginForm("Register", "Person", FormMethod.Get))
{
<p>
Find by name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
<input type="submit" value="Search" />
</p>
}
<table class="table">
<tr>
<th>
First name
</th>
<th>
Last name
</th>
<th>
E-mail Address
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.firstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.lastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.email)
</td>
</tr>
}
</table>
<br />
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("Register",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
如何实现搜索功能?
答案 0 :(得分:2)
您可以将列表局部视图移动到创建表单之外,然后将搜索功能放入列表局部视图中的自己的表单中(无论如何它们都是完全分离的,因此应该是分开的)。这应该可以实现您正在寻找的东西。
答案 1 :(得分:2)
嵌套forms is not allowed并可能导致浏览器之间出现未定义的行为。
使用两个单独的表单而不是嵌套表单
像史蒂夫说的那样&#34;将列表局部视图移到创建表单之外&#34;将导致两个单独的形式而不是另一个形式内的一个形式像
@using (Html.BeginForm())
{
}
@using (Html.BeginForm("Register", "Person", FormMethod.Get))
{
}
代替(不允许表单中的表单)
@using (Html.BeginForm())
{
@using (Html.BeginForm("Register", "Person", FormMethod.Get))
{
}
}