2014-11-19 3 views
1

Я создал регистрационную форму для человека. В этой форме я добавил один partial view, который показывает список людей. Я добавил пейджинг в эту форму. Теперь я хочу реализовать функцию поиска.mvc4 пейджинг с частичным видом

Моя форма выглядит следующим образом

enter image description here

Здесь я хочу реализовать функцию поиска. но проблема в том, что у меня есть две кнопки на форме, то есть 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 })) 

Как я могу реализовать функции поиска?

+1

Попробуйте отделить частичное представление '@ Html.Partial (" list ", Model.listOfPerson)' от первой формы и добавить его после окончания формы. –

ответ

2

Вы можете перемещать частичный вид списка за пределами формы создания, а затем помещать функциональность поиска в свою собственную форму внутри частичного представления списка (они в любом случае полностью разделены, поэтому должны быть отдельными). Затем это должно достичь того, что вы ищете.

2

Вложение forms is not allowed и может привести к неопределенному поведению между браузерами.

Использование двух отдельных форм вместо вложенной формы

как Стиву говорит «переместить частичный вид списка вне формы создания» привело бы на две отдельные формы вместо одной формы внутри другой формы

как

@using (Html.BeginForm()) 
{ 
} 

@using (Html.BeginForm("Register", "Person", FormMethod.Get)) 
{ 
} 

вместо (форма в виде не допускается)

@using (Html.BeginForm()) 
    { 

     @using (Html.BeginForm("Register", "Person", FormMethod.Get)) 
     { 
     } 
    } 
Смежные вопросы